Json.Net 用法

首先用最基本的JsonTextWriter和JsonTextReader
JsonTextWriter使用成對的方法來輸出Json字串
JsonTextReader使用Read方法來持續讀取Json字串
看得出來在使用上有點拖泥帶水
static void Main(string[] args)
{
string jsonString = string.Empty;

using (StringWriter sw = new StringWriter())
{
using (JsonTextWriter writer = new JsonTextWriter(sw))
{
// 開始輸出物件
writer.WriteStartObject();

// 輸出屬性:id
writer.WritePropertyName(“id”);
writer.WriteValue(1);

// 輸出屬性:name
writer.WritePropertyName(“name”);
writer.WriteValue(“xian”);

// 輸出屬性today
writer.WritePropertyName(“today”);
writer.WriteValue(DateTime.Today);

// 開始輸出陣列
writer.WritePropertyName(“arraydata”);
writer.WriteStartArray();
writer.WriteValue(1);
writer.WriteValue(2);
writer.WriteValue(3);

// 結束輸出陣列
writer.WriteEndArray();

// 結束串出物件
writer.WriteEndObject();
}

jsonString = sw.ToString();
Console.WriteLine(jsonString);
}

using (StringReader sr = new StringReader(jsonString))
{
using (JsonTextReader reader = new JsonTextReader(sr))
{
while (reader.Read())
{
if (reader.Value != null)
{
Console.WriteLine(“token:{0}, value:{1}”, reader.TokenType, reader.Value);
}
else
{
Console.WriteLine(“token:{0}”, reader.TokenType);
}
}
}
}

Console.ReadLine();
}

執行結果

使用JObject可以簡化一點
// 淮備Json資料
JObject obj1 = new JObject()
{
new JProperty(“id”, 1),
new JProperty(“name”, “xian”),
new JProperty(“today”, DateTime.Today),
new JProperty(“arraydata”,
new JArray()
{
new JValue(1),
new JValue(2),
new JValue(3),
})
};

string jsonString = obj1.ToString();
Console.WriteLine(jsonString);

// 解析Json格式
JObject obj2 = JObject.Parse(jsonString);
Console.WriteLine(
“id:{0}, name:{1}, today:{2}, arraydata:{3}”,
obj2[“id”],
obj2[“name”],
obj2[“today”],
obj2[“arraydata”]);
Console.ReadLine();
執行結果

最常使用還是JsonConvert這一個方式,用法也很直覺

// 淮備資料
Person p1 = new Person()
{
id = 1,
name = “xian”,
today = DateTime.Today
};

// 序列化物件
string jsonString = JsonConvert.SerializeObject(p1);
Console.WriteLine(“jsonstring:{0}”, jsonString);

// 反序列化物件
Person p2 = JsonConvert.DeserializeObject<Person>(jsonString);
Console.WriteLine(“id:{0}, name:{1}, today:{2}”, p2.id, p2.name, p2.today);

Console.ReadLine();
執行結果