前两节介绍了些JSON的基础知识和JSON的一些简单应用,.NET中同样也增加了对JSON的一些支持,包括写入、读取、序列化和反序列化,这里收集了一些前辈的一些例子,来看看吧!
首先要引用一下几个名称空间:
using System.IO;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
我们定义一个产品类:
/// <summary>
/// 产品类
/// </summary>
public class Product
{
String Name;
DateTime Expiry;
decimal Price;
}
1、写入JSON
/// <summary>
/// 写入json
/// </summary>
protected void WriteJson()
{
StringWriter sw = new StringWriter();
JsonWriter writer = new JsonWriter(sw);
writer.WriteStartArray();
writer.WriteStartObject();
writer.WritePropertyName("Name");
writer.WriteValue("nameValue");
writer.WriteEndObject();
writer.WriteStartObject();
writer.WritePropertyName("Expiry");
writer.WriteValue(DateTime.Now);
writer.WriteEndObject();
writer.WriteStartObject();
writer.WritePropertyName("Price");
writer.WriteValue(23.0m);
writer.WriteEndObject();
writer.WriteEndArray();
writer.Flush();
String jsonText = sw.GetStringBuilder().ToString();
Response.Write(jsonText);
}
2、读取JSON
///<summary>
///读取JSON
///</summary>
protected void ReadJson()
{
String jsonTest = "[{property1:'value1'},{property2:'value2'},{property3:'value3'}]";
JsonReader reader = new JsonReader(new StringReader(jsonTest));
while (reader.Read())
{
Response.Write("TokenType:" + reader.TokenType +"ValueType:" + reader.ValueType + "Value:" + reader.Value + "<br/>");
}
}
3、序列化
///<summary>
///序列化JSON
///</summary>
protected String Serialize(Product product)
{
String output = JavaScriptConvert.SerializeObject(product);
return output;
}
4、反序列化
/// <summary>
/// 反序列化
/// </summary>
protected Product Deserialize(String jsonStr)
{
try
{
Product product = (Product)JavaScriptConvert.DeserializeObject(jsonStr);
return product;
}
catch(Exception ex)
{
return null;
}
}