使用开源的类库Newtonsoft.Json(下载地址http://json.codeplex.com/)。下载后加入工程就能用。通常可以使用JObject, JsonReader, JsonWriter处理。这种方式最通用,也最灵活,可以随时修改不爽的地方。

(1)使用JsonReader读Json字符串:

string jsonText = @"{""input"" : ""value"", ""output"" : ""result""}";
JsonReader reader = new JsonTextReader(new StringReader(jsonText)); while (reader.Read())
{
Console.WriteLine(reader.TokenType + "\t\t" + reader.ValueType + "\t\t" + reader.Value);
}

(2)使用JsonWriter写字符串:

StringWriter sw = new StringWriter();
JsonWriter writer = new JsonTextWriter(sw); writer.WriteStartObject();
writer.WritePropertyName("input");
writer.WriteValue("value");
writer.WritePropertyName("output");
writer.WriteValue("result");
writer.WriteEndObject();
writer.Flush(); string jsonText = sw.GetStringBuilder().ToString();
Console.WriteLine(jsonText);

(3)使用JObject读写字符串:

JObject jo = JObject.Parse(jsonText);
string[] values = jo.Properties().Select(item => item.Value.ToString()).ToArray();

(4)使用JsonSerializer读写对象(基于JsonWriter与JsonReader):

数组型数据

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();

嵌套格式

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();

自定义类Project

Project p = new Project() { Input = "stone", Output = "gold" };
JsonSerializer serializer = new JsonSerializer();
StringWriter sw = new StringWriter();
serializer.Serialize(new JsonTextWriter(sw), p);
Console.WriteLine(sw.GetStringBuilder().ToString());

StringReader sr = new StringReader(@"{""Input"":""stone"", ""Output"":""gold""}");
Project p1 = (Project)serializer.Deserialize(new JsonTextReader(sr), typeof(Project));
Console.WriteLine(p1.Input + "=>" + p1.Output);

  上面的代码都是基于下面这个Project类定义:

class Project
{
    public string Input { get; set; }
    public string Output { get; set; }
}

  此外,如果上面的JsonTextReader等类编译不过的话,说明是我们自己修改过的类,换成你们自己的相关类就可以了,不影响使用。

最新文章

  1. Mysql性能优化三(分表、增量备份、还原)
  2. PHP计算程序运行时间的类
  3. setInterval和setTimeout的区别
  4. C#学习笔记---如何提高代码逼格
  5. 配置Synergy(Server : XP, client: Win7)
  6. Android:设计之屏幕适配
  7. python 常用模块
  8. Bootstrap 分页插件 ajax获取数据显示
  9. Poj2761-Feed the dogs(伸展树求名次)
  10. Android Broadcast Receiver注册
  11. OpenStreetMap初探(一)——了解OpenStreetMap
  12. 【2017-04-24】winform基础、登录窗口、窗口属性
  13. 通过bin-log对mysql进行数据恢复
  14. ubuntu修改grub,修改开机顺序,配置grub启动顺序
  15. 【CQOI2011】放棋子
  16. 基础必备Linux操作
  17. MongoDB 教程(六):创建集合、删除集合
  18. node 安装 vue-cli 创建vue项目
  19. Piwis Tester II V18.100 with CF30 Laptop for Porsche
  20. U890采购入库单修改供应商

热门文章

  1. MySQL备份的shell脚本
  2. HDU 1159 Common Subsequence
  3. POJ-1655 Balancing Act
  4. PHP学习——数据类型
  5. poj2553 强连通
  6. Python爬虫学习笔记——防豆瓣反爬虫
  7. C++@重载函数
  8. 如果将彩色图像和灰度图像一起放进 CNN 中去,会是什么结果?
  9. 套接字I/O模型-重叠I/O
  10. 最短路径—Dijkstra算法和Floyd算法【转】