http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 9852|回复: 7

[Json] Newtonsoft.Json 序列化和反序列Josn数据详解

[复制链接]
发表于 2014-5-22 15:28:10 | 显示全部楼层 |阅读模式
这里下载: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'}].

本帖被以下淘专辑推荐:



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
 楼主| 发表于 2014-5-22 15:31:52 | 显示全部楼层
取值的方法如下
[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:35 | 显示全部楼层
[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
发表于 2014-5-22 15:46:48 | 显示全部楼层
不错 学习了
发表于 2014-5-23 10:52:47 | 显示全部楼层
受教了,学习中……
发表于 2015-9-10 20:01:03 | 显示全部楼层
感谢您的无私奉献,真是帮了我的大忙了
发表于 2016-11-19 14:31:11 | 显示全部楼层
强烈支持楼主ing……
发表于 2019-6-5 12:05:27 | 显示全部楼层
我只是路过打酱油的。
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-19 04:43

© 2014-2021

快速回复 返回顶部 返回列表