苏飞论坛

标题: Newtonsoft.Json 序列化和反序列Josn数据详解 [打印本页]

作者: 站长苏飞    时间: 2014-5-22 15:28
标题: Newtonsoft.Json 序列化和反序列Josn数据详解
这里下载:http://www.newtonsoft.com/products/json/
安装:
   1.解压下载文件,得到Newtonsoft.Json.dll
   2.在项目中添加引用..
序列化和反序列在.net项目中:

[C#] 纯文本查看 复制代码
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 JsonTextReader(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))
}


结果显示:
TokenTypeValueTypeValue
StartArraynullnull
StringSystem.StringJSON!
IntegerSystem.Int321
BooleanSystem.BooleanTrue
StartObjectnullnull
PropertyNameSystem.Stringproperty
StringSystem.Stringvalue
EndObjectnullnull
EndArraynullnull
JSON写入
[C#] 纯文本查看 复制代码
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!',1,true,{property:'value'}]


这里会打印出: ['JSON!',1,true,{property:'value'}].

作者: 站长苏飞    时间: 2014-5-22 15:31
取值的方法如下
[C#] 纯文本查看 复制代码
  string jsonText =""{\"city\":\"5\",\"sex\":\"男\",\"name\":\"程序员\"}"";
                        JsonReader reader = new JsonTextReader(new StringReader(jsonText));
                        while (reader.Read())
                        {
                            if (reader.TokenType == JsonToken.PropertyName && reader.Value.ToString() == "city")
                            {
                                reader.Read();
city= reader.Value.ToString();
                            }
                            else if (reader.TokenType == JsonToken.PropertyName && reader.Value.ToString() == "sex")
                            {
                                reader.Read();
sex= reader.Value.ToString();
                            }
                            else if (reader.TokenType == JsonToken.PropertyName && reader.Value.ToString() == "name")
                            {
                                reader.Read();
name= reader.Value.ToString();
                            }
                        }


作者: 站长苏飞    时间: 2014-5-22 15:34
[C#] 纯文本查看 复制代码
string jsonArrayText1 = "[{'a':'a1','b':'b1'},{'a':'a2','b':'b2'}]";
JArray ja = (JArray)JsonConvert.DeserializeObject(jsonArrayText1);
string ja1a = ja[1]["a"].ToString();
//或者
JObject o = (JObject)ja[1];
string oa = o["a"].ToString();


嵌套格式
[C#] 纯文本查看 复制代码
string jsonText = "{\"beijing\":{\"zone\":\"海淀\",\"zone_en\":\"haidian\"}}";
JObject jo = (JObject)JsonConvert.DeserializeObject(jsonText);
string zone = jo["beijing"]["zone"].ToString();
string zone_en = jo["beijing"]["zone_en"].ToString();


参考:http://www.cnblogs.com/txw1958/archive/2012/08/01/csharp-json.html

作者: Kenney    时间: 2014-5-22 15:46
不错 学习了
作者: usemysql    时间: 2014-5-23 10:52
受教了,学习中……
作者: good081    时间: 2015-9-10 20:01
感谢您的无私奉献,真是帮了我的大忙了
作者: wtf3505    时间: 2016-11-19 14:31
强烈支持楼主ing……
作者: jacksonwong    时间: 2019-6-5 12:05
我只是路过打酱油的。




欢迎光临 苏飞论坛 (http://www.sufeinet.com/) Powered by Discuz! X3.4