- ติดตั้ง Newtonsoft สำหรับ Json บน VS 2013
- ติดตั้ง Newtonsoft.Json บน VS 2017
- การแปลง JSON เป็นคลาส และคลาสเป็น JSON
1.ติดตั้ง Newtonsoft สำหรับ Json บน VS 2013
ใช้ NuGet ติดตั้ง Json.NET บน Visual Studio 2013 แล้ว Error ตามนี้
'Newtonsoft.Json' already has a dependency defined for 'Microsoft.CSharp'
ลองติดตั้งผ่าน console ของ PM ด้วยเวอร์ขันเก่า (9.0.1)
PM> Install-Package Newtonsoft.Json -Version 9.0.1 Installing 'Newtonsoft.Json 9.0.1'. Successfully installed 'Newtonsoft.Json 9.0.1'. Adding 'Newtonsoft.Json 9.0.1' to JackWebServices. Successfully added 'Newtonsoft.Json 9.0.1' to JackWebServices.
ใช้ได้ แต่ถ้าจะไม่ระบุเวอร์ชันก็ตัด option -Version ออก
สร้างคลาสของข้อมูลที่จะส่ง
public class Result
{
public int id { get; set; }
public string value { get; set; }
public string info { get; set; }
}
การใช้งานก็ใช้คำสั่ง JsonConvert.SerializeObject()
string json = JsonConvert.SerializeObject(new
{
results = new List<Result>()
{
new Result { id = 1, value = "ABC", info = "ABC" },
new Result { id = 2, value = "JKL", info = "JKL" }
}
});
ผลลัพธ์
{"results":[{"id":1,"value":"ABC","info":"ABC"},{"id":2,"value":"JKL","info":"JKL"}]}
Link
- How to return JSon object
- How to import JsonConvert in C# application?
- ‘Newtonsoft.Json’ already has a dependency defined for ‘Microsoft.CSharp’
- JsonConvert Class
2.ติดตั้ง Newtonsoft.Json บน VS 2017
ติดตั้ง Newtonsoft.Json.11.0.2 บน Visual Studio 2017
PM> Install-Package Newtonsoft.Json Attempting to gather dependency information for package 'Newtonsoft.Json.11.0.2' with respect to project 'ConsoleApp1', targeting '.NETFramework,Version=v4.6.1' Gathering dependency information took 20.47 ms Attempting to resolve dependencies for package 'Newtonsoft.Json.11.0.2' with DependencyBehavior 'Lowest' Resolving dependency information took 0 ms Resolving actions to install package 'Newtonsoft.Json.11.0.2' Resolved actions to install package 'Newtonsoft.Json.11.0.2' Retrieving package 'Newtonsoft.Json 11.0.2' from 'nuget.org'. GET https://api.nuget.org/v3-flatcontainer/newtonsoft.json/11.0.2/newtonsoft.json.11.0.2.nupkg OK https://api.nuget.org/v3-flatcontainer/newtonsoft.json/11.0.2/newtonsoft.json.11.0.2.nupkg 51ms Installing Newtonsoft.Json 11.0.2. Adding package 'Newtonsoft.Json.11.0.2' to folder 'C:\Users\Jack\source\reposd\ConsoleApp1\packages' Added package 'Newtonsoft.Json.11.0.2' to folder 'C:\Users\Jack\source\reposd\ConsoleApp1\packages' Added package 'Newtonsoft.Json.11.0.2' to 'packages.config' Successfully installed 'Newtonsoft.Json 11.0.2' to ConsoleApp1 Executing nuget actions took 2.67 sec Time Elapsed: 00:00:04.3525244
Program.cs
เปลี่ยน object ให้เป็น string ของ json
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
string json = JsonConvert.SerializeObject(new Result
{
id = 1,
value = "ABC",
info = "DEF"
});
string jsons = JsonConvert.SerializeObject(new
{
results = new List<Result>()
{
new Result { id = 2, value = "GHI", info = "JKL" },
new Result { id = 3, value = "MNO", info = "PQR" }
}
});
Console.WriteLine(json);
Console.WriteLine(jsons);
}
}
public class Result
{
public int id { get; set; }
public string value { get; set; }
public string info { get; set; }
}
}
บรรทัดที่ 11-16 จะได้ json
{"id":1,"value":"ABC","info":"DEF"}
{
"id": 1,
"value": "ABC",
"info": "DEF"
}
บรรทัดที่ 18-25 และ jsons
{"results":[{"id":1,"value":"ABC","info":"ABC"},{"id":2,"value":"JKL","info":"JKL"}]}
{
"results": [
{
"id": 2,
"value": "GHI",
"info": "JKL"
},
{
"id": 3,
"value": "MNO",
"info": "PQR"
}
]
}
Program.cs
เปลี่ยน string ของ json ให้เป้น object
using Newtonsoft.Json;
using System;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
string text1 = @"
{
'id': 1,
'value': 'ABC',
'info': 'DEF'
}";
Result result = JsonConvert.DeserializeObject<Result>(text1);
Console.WriteLine("user.id " + result.id);
Console.WriteLine("user.value " + result.value);
Console.WriteLine("user.info " + result.info);
}
}
public class Result
{
public int id { get; set; }
public string value { get; set; }
public string info { get; set; }
}
}
ผลการรัน
user.id 1 user.value ABC user.info DEF
Link
- newtonsoft.com – JsonConvert Class
- nuget.org – Newtonsoft.Json 11.0.2
- Convert JSON String To C# Object
3.การแปลง JSON เป็นคลาส และคลาสเป็น JSON
ติดตั้ง Newtonsoft.Json
PM> Install-Package Newtonsoft.Json -Version 9.0.1
Program.cs
using Newtonsoft.Json;
using System;
namespace ConsoleApplication4
{
class Product
{
public string username { get; set; }
public string password { get; set; }
}
class Program
{
static void Main(string[] args)
{
JsonStringToClass();
ClassToJsonString();
}
static public void JsonStringToClass()
{
Console.WriteLine("JsonStringToClass");
string jsonString = "{\"username\": \"myUser\", ";
jsonString += " \"password\": \"myPassword\"}";
Product result = JsonConvert.DeserializeObject<Product>(jsonString);
Console.WriteLine(" result.username = " + result.username);
Console.WriteLine(" result.password = " + result.password);
}
static public void ClassToJsonString()
{
Console.WriteLine("ClassToJsonString");
Product result = new Product();
result.username = "Jack";
result.password = "secret";
string jsonString = JsonConvert.SerializeObject(result);
Console.WriteLine(" jsonString = " + jsonString);
}
}
}
บรรทัดที่ 26 : แปลงจาก json string เป็น class
บรรทัดที่ 38 : แปลงจาก class เป็น json string
จะได้
JsonStringToClass
result.username = myUser
result.password = myPassword
ClassToJsonString
jsonString = {"username":"Jack","password":"secret"}