安装:
1 .解压下载文件,得到Newtonsoft.Json.dll
2.在项目中添加引用..
序列化和反序列在.net项目中:
- Product product = new Product();
- product.Name = "Apple";
- product.Expiry = new DateTime(2008,12,28);
- product.Price = 3.99M;
- product.Sizes = new string[] { "Small","Medium","Large" };
- string output = javascriptConvert.SerializeObject(product);
- //{
- // "Name": "Apple",
- // "Expiry": new Date(1230422400000),
- // "Price": 3.99,
- // "Sizes": [
- // "Small",
- // "Medium",
- // "Large"
- // ]
- //}
- Product deserializedProduct = (Product)javascriptConvert.DeserializeObject(output,typeof(Product));
读取JSON
- string jsonText = "['JSON!',1,true,{property:'value'}]";
- JsonReader reader = new JsonReader(new StringReader(jsonText));
- Console.WriteLine("TokenType\t\tValueType\t\tValue");
- while (reader.Read())
- {
- Console.WriteLine(reader.TokenType + "\t\t" + WriteValue(reader.ValueType) + "\t\t" + WriteValue(reader.Value))
- }
结果显示:
TokenType | ValueType | Value |
---|---|---|
StartArray | null | null |
String | System.String | JSON! |
Integer | System.Int32 | 1 |
Boolean | System.Boolean | True |
StartObject | null | null |
PropertyName | System.String | property |
String | System.String | value |
EndObject | null | null |
EndArray | null | null |
JSON写入
- StringWriter sw = new StringWriter();
- JsonWriter writer = new JsonWriter(sw);
- writer.WriteStartArray();
- writer.WriteValue("JSON!");
- writer.WriteValue(1);
- writer.WriteValue(true);
- writer.WriteStartObject();
- writer.WritePropertyName("property");
- writer.WriteValue("value");
- writer.WriteEndObject();
- writer.WriteEndArray();
- writer.Flush();
- string jsonText = sw.GetStringBuilder().ToString();
- Console.WriteLine(jsonText);
- // ['JSON!',{property:'value'}]
这里会打印出: ['JSON!',{property:'value'}]
.
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.UI;
- using System.Web.UI.WebControls;
- using Newtonsoft.Json;
- using System.IO;
- using Newtonsoft.Json.Linq;
- namespace WebApplication15
- {
- public partial class WebForm4 : System.Web.UI.Page
- {
- protected void Page_Load(object sender,EventArgs e)
- {
- var jsonBuilder = new System.Text.StringBuilder();
- using (var jsonWriter = new Newtonsoft.Json.JsonTextWriter(new System.IO.StringWriter(jsonBuilder)))
- {
- jsonWriter.WriteStartObject();
- jsonWriter.WritePropertyName("status");
- if (false)
- {
- jsonWriter.WriteValue(false);
- jsonWriter.WritePropertyName("msg");
- jsonWriter.WriteValue("未知原因,请重试");
- }
- else
- {
- jsonWriter.WriteValue(true);
- jsonWriter.WritePropertyName("yftest");
- jsonWriter.WriteStartArray();
- for (int i = 0; i < 10; i++)
- {
- jsonWriter.WriteStartObject();
- jsonWriter.WritePropertyName("id");
- jsonWriter.WriteValue(i);
- jsonWriter.WritePropertyName("name");
- jsonWriter.WriteValue("test");
- jsonWriter.WriteEndObject();
- }
- jsonWriter.WriteEndArray();
- }
- jsonWriter.WriteEndObject();
- jsonWriter.Flush();
- }
- Response.Write(jsonBuilder);
- //获取根status
- //var jsonObject = Newtonsoft.Json.Linq.JObject.Parse(jsonBuilder.ToString());
- //JToken ageToken = jsonObject["status"];
- //Response.Write(ageToken.ToString());
- //遍历深层参数
- var jsonObject = Newtonsoft.Json.Linq.JObject.Parse(jsonBuilder.ToString());
- var selectToken = jsonObject.SelectTokens("yftest",false);
- //if (selectToken != null && selectToken is Newtonsoft.Json.Linq.JArray)
- //{
- foreach (var item in selectToken.Children())
- {
- JToken ageToken = item["id"];
- }
- //}
- }
- }
- }