所谓Json数据,其实就是js里面 字符字面量 和 对象字面量 的组合而已。
形如:
{
"name" : "n",
"value" : "10",
"id" : "1",
"items" : [
{"key1" : "value1"},
{"key2" : "value2"}
]
}
的数据
在js里面可以直接用eval将这串文本生成数组或对象的实例
下面主要简单描述一下在.net里面是用Jayrock操作json数据的方法。
jayrock是一个开源的.net库,采用C# 1.1开发。 该库在.net 2.0里面仍可以正常是用。 之所以选择这个库主要是因为它是开源的,碰到问题可以直接找源代码看,比较容易定位错误。
下载地址:http://jayrock.berlios.de/#quick-start
编译好的有2个dll, Jayrock.Json.dll 和 Jayrock.dll。 如果只想是用它的json功能, 就只是用Jayrock.Json.dll 已经足够了!
Jayrock.Json 库里面比较重要的几个对象: 首先是:JsonConvert,其次是:JsonReader 和JsonWriter 等(这些类的使用方法类似xml类)
下面介绍主要介绍一下对JsonConvert的使用
1.引用命名空间:
using Jayrock.Json;
using Jayrock.Json.Conversion;
主要代码
{
'Name' : 'my-config',
'Desc' : 'test',
'Inputs' : [
{
'Name' : 'mobile',
'Desc' : '手机',
'InputType' : 'Mobile',
'Default_Value' : '133'
}
]
}";
Response.Write("read json data by JsonConvert.Import!<br>");
string separator = new string('-', 100) + "<br>";
Response.Write(separator);
Response.Write("读入到指定类:<br>");
Config config = JsonConvert.Import(typeof(Config), json_config) as Config;
Response.Write("config name: " + config.Name + "<br>");
Response.Write("config desc: " + config.Desc + "<br><br>");
Input input = config.Inputs[0];
Response.Write("config input-name: " + input.Name + "<br>");
Response.Write("config input-desc: " + input.Desc + "<br>");
Response.Write("config input-type: " + input.InputType + "<br>");
Response.Write(separator);
Response.Write("读入到JsonObject对象:<br>");
JsonObject jo = JsonConvert.Import(json_config) as JsonObject;
Response.Write("config name: " + jo["Name"] + "<br>");
Response.Write("config desc: " + jo["Desc"] + "<br><br>");
JsonArray ja = jo["Inputs"] as JsonArray;
foreach(JsonObject o in ja)
{
Response.Write("config input-name: " + o["Name"] + "<br>");
Response.Write("config input-desc: " + o["Desc"] + "<br>");
Response.Write("config input-type: " + o["InputType"] + "<br>");
}
Response.End();
注意,第二种方法,由于是采用以key做索引的方式,因此必须和json数据中的key大小写一致!
输出页面是:
read json data by JsonConvert.Import!
----------------------------------------------------------------------------------------------------
读入到指定类:
config name: my-config
config desc: test
config input-name: mobile
config input-desc: 手机
config input-type: Mobile
----------------------------------------------------------------------------------------------------
读入到JsonObject对象:
config name: my-config
config desc: test
config input-name: mobile
config input-desc: 手机
config input-type: Mobile