安装:
1 .解压下载文件,得到Newtonsoft.Json.dll
2.在项目中添加引用..
序列化和反序列在.net项目中:
- Product product = new Product();@H_403_21@
@H_403_21@ product.Name = "Apple";@H_403_21@ product.Expiry = new DateTime(2008,12,28);@H_403_21@ product.Price = 3.99M;@H_403_21@ product.Sizes = new string[] { "Small","Medium","Large" };@H_403_21@ @H_403_21@ string output = javascriptConvert.SerializeObject(product);@H_403_21@ //{@H_403_21@ // "Name": "Apple",@H_403_21@ // "Expiry": new Date(1230422400000),@H_403_21@ // "Price": 3.99,@H_403_21@ // "Sizes": [@H_403_21@ // "Small",@H_403_21@ // "Medium",@H_403_21@ // "Large"@H_403_21@ // ]@H_403_21@ //}@H_403_21@ @H_403_21@ Product deserializedProduct = (Product)javascriptConvert.DeserializeObject(output,typeof(Product));@H_403_21@
读取JSON
- string jsonText = "['JSON!',1,true,{property:'value'}]";@H_403_21@
@H_403_21@ JsonReader reader = new JsonReader(new StringReader(jsonText));@H_403_21@ @H_403_21@ Console.WriteLine("TokenType\t\tValueType\t\tValue");@H_403_21@ @H_403_21@ while (reader.Read())@H_403_21@ {@H_403_21@ Console.WriteLine(reader.TokenType + "\t\t" + WriteValue(reader.ValueType) + "\t\t" + WriteValue(reader.Value))@H_403_21@}
@H_403_21@
结果显示:
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();@H_403_21@
JsonWriter writer = new JsonWriter(sw);@H_403_21@ @H_403_21@ writer.WriteStartArray();@H_403_21@ writer.WriteValue("JSON!");@H_403_21@ writer.WriteValue(1);@H_403_21@ writer.WriteValue(true);@H_403_21@ writer.WriteStartObject();@H_403_21@ writer.WritePropertyName("property");@H_403_21@ writer.WriteValue("value");@H_403_21@ writer.WriteEndObject();@H_403_21@ writer.WriteEndArray();@H_403_21@ @H_403_21@ writer.Flush();@H_403_21@ @H_403_21@ string jsonText = sw.GetStringBuilder().ToString();@H_403_21@ @H_403_21@ Console.WriteLine(jsonText);@H_403_21@ // ['JSON!',{property:'value'}]@H_403_21@
这里会打印出: ['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"];
- }
- //}
- }
- }
- }@H_403_21@