1. Apresentação do Newtonsoft.Json
O Newtonsoft.Json (conhecido como Json.NET) é um componente open‑source para serialização e desserialização JSON no ecossistema .NET.
- A primeira versão, Json.NET 1.0.1, foi lançada em 2006; as versões atuais já passam da 10.
- Inicialmente compatível com o .NET 2.0, funciona com praticamente todos os frameworks .NET (.NET Framework, .NET Core, .NET 5+).
- Assembly:
Newtonsoft.Json.dll, instalado por meio do NuGet. - Seu código‑fonte ficava hospedado no CodePlex, mas foi migrado para o GitHub; é amplamente utilizado em projetos empresariais.
2. O que é JSON
JSON (JavaScript Object Notation, notação de objetos JavaScript)
- Formato textual leve para troca de dados, independente de linguagem e não exclusivo do JavaScript.
- Estruturas principais: pares chave‑valor
key:value; suporta aninhamento de objetos{}e arrays[].
{"webname":"FoxDevelop","website":"foxdevelop.com","age":4,"students":[{"name":"tom"},{"name":"bill"}]}Code language: C# (cs)
II. Definição das classes de entidade (correspondentes à estrutura JSON)
Person.cs (objeto aluno)
namespace NewtonsoftDemo
{
public class Person
{
public string name { set; get; }
}
}Code language: C# (cs)
WebInfo.cs (objeto principal de nível superior)
namespace NewtonsoftDemo
{
public class WebInfo
{
public string webname { set; get; }
public string website { set; get; }
public int age { set; get; }
public Person[] students { set; get; }
}
}Code language: C# (cs)
Exemplo: serializar objeto para JSON
protected void Page_Load(object sender, EventArgs e)
{
// 1. Instanciar a entidade e preencher os valores
WebInfo webInfo = new WebInfo();
webInfo.age = 4;
webInfo.webname = "FoxDevelop";
webInfo.website = "foxdevelop.com";
webInfo.students = new Person[]
{
new Person { name = "TOM" },
new Person { name = "JACK" }
};
// 2. Forma de baixo nível do Newtonsoft.Json: serializar com JsonWriter
StringWriter sw = new StringWriter();
JsonWriter writer = new JsonWriter(sw);
new JsonSerializer().Serialize(writer, webInfo);
string json = sw.GetStringBuilder().ToString();
}Code language: C# (cs)
Sintaxe simplificada para uso diário
O Newtonsoft.Json disponibiliza métodos utilitários estáticos, evitando a criação manual de JsonWriter:
// Serialização em uma linha, muito usada no dia a dia do desenvolvimento
string json = JsonConvert.SerializeObject(webInfo);Code language: C# (cs)
Resultado JSON gerado
{
"webname": "FoxDevelop",
"website": "foxdevelop.com",
"age": "4",
"students": [
{"name":"TOM"},
{"name":"JACK"}
]
}Code language: C# (cs)
Outras observações
- System.Text.Json: biblioteca JSON nativa da Microsoft a partir do .NET Core 3.0; ainda assim, projetos antigos do .NET Framework costumam usar o Newtonsoft.Json.
- Recursos: suporte a apelidos de propriedades, ignorar campos, formatação de datas, tratamento de referências circulares e outras funcionalidades avançadas.
Apresentação