c# - tutorial - vb net serialize object to json




Como faço para transformar um objeto c#em uma seqüência JSON no.net? (10)

Eu votaria no JSON Serializer do ServiceStack:

using ServiceStack.Text

string jsonString = new { FirstName = "James" }.ToJson();

É também o serializador JSON mais rápido disponível para .NET: http://www.servicestack.net/benchmarks/

Eu tenho aulas como estas:

class MyDate
{
    int year, month, day;
}

class Lad
{
    string firstName;
    string lastName;
    MyDate dateOfBirth;
}

E eu gostaria de transformar um objeto Lad em uma string JSON assim:

{
    "firstName":"Markoff",
    "lastName":"Chaney",
    "dateOfBirth":
    {
        "year":"1901",
        "month":"4",
        "day":"30"
    }
}

(sem a formatação). Eu encontrei este link , mas ele usa um namespace que não está no .NET 4. Também ouvi falar do JSON.NET , mas o site deles parece estar inativo no momento, e não estou interessado em usar arquivos DLL externos. Existem outras opções além de criar manualmente um gravador de strings JSON?



Se você está em um controlador web ASP.NET MVC, é tão simples quanto:

string ladAsJson = Json(Lad);

Não posso acreditar que ninguém tenha mencionado isso.


Tão fácil quanto isso, também funciona para objetos dinâmicos (tipo de objeto):

string json = new
System.Web.Script.Serialization.JavaScriptSerializer().Serialize(MYOBJECT);

Use essas ferramentas para gerar a classe C # e use esse código para serializar seu objeto

 var json = new JavaScriptSerializer().Serialize(obj);

Use a biblioteca Json.Net , você pode baixá-lo do Nuget Packet Manager.

Serializando a Json String:

 var obj = new Lad
        {
            firstName = "Markoff",
            lastName = "Chaney",
            dateOfBirth = new MyDate
            {
                year = 1901,
                month = 4,
                day = 30
            }
        };

var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(obj);

Desserializando para Objeto:

var obj = Newtonsoft.Json.JsonConvert.DeserializeObject<Lad>(jsonString );

Use o código abaixo para converter XML em JSON.

var json = new JavaScriptSerializer().Serialize(obj);

Você poderia usar a classe msdn.microsoft.com/en-us/library/… (adicionar referência a System.Web.Extensions ):

using System.Web.Script.Serialization;
var json = new JavaScriptSerializer().Serialize(obj);

Um exemplo completo:

using System;
using System.Web.Script.Serialization;

public class MyDate
{
    public int year;
    public int month;
    public int day;
}

public class Lad
{
    public string firstName;
    public string lastName;
    public MyDate dateOfBirth;
}

class Program
{
    static void Main()
    {
        var obj = new Lad
        {
            firstName = "Markoff",
            lastName = "Chaney",
            dateOfBirth = new MyDate
            {
                year = 1901,
                month = 4,
                day = 30
            }
        };
        var json = new JavaScriptSerializer().Serialize(obj);
        Console.WriteLine(json);
    }
}

Desde que todos nós amamos um forros

... este depende do pacote Newtonsoft NuGet, que é popular e melhor que o serializador padrão.

Newtonsoft.Json.JsonConvert.SerializeObject(new {foo = "bar"})

Documentação: Serializando e Deserializando o JSON


Serializador

 public static void WriteToJsonFile<T>(string filePath, T objectToWrite, bool append = false) where T : new()
{
        var contentsToWriteToFile = JsonConvert.SerializeObject(objectToWrite, new JsonSerializerSettings
        {
            Formatting = Formatting.Indented,
        });
        using (var writer = new StreamWriter(filePath, append))
        {
            writer.Write(contentsToWriteToFile);
        }
}

Objeto

namespace MyConfig
{
    public class AppConfigurationSettings
    {
        public AppConfigurationSettings()
        {
            /* initialize the object if you want to output a new document
             * for use as a template or default settings possibly when 
             * an app is started.
             */
            if (AppSettings == null) { AppSettings=new AppSettings();}
        }

        public AppSettings AppSettings { get; set; }
    }

    public class AppSettings
    {
        public bool DebugMode { get; set; } = false;
    }
}

Implementação

var jsonObject = new AppConfigurationSettings();
WriteToJsonFile<AppConfigurationSettings>(file.FullName, jsonObject);

Saída

{
  "AppSettings": {
    "DebugMode": false
  }
}




serialization