l 数据在名称/值对中
l 数据由逗号分隔
l 花括号保存对象
l 方括号保存数组
JSON 值可以是:
l 数字(整数或浮点数)
l 字符串(在双引号中)
l 逻辑值(true 或 false)
l 数组(在方括号中)
l 对象(在花括号中)
l null
------------------------------
2.用XML表示 中国 部分省市数据如下: < country > < name >中国</ name > < province > < name >黑龙江</ name > < cities > < city >哈尔滨</ city > < city >大庆</ city > </ cities > </ province > < province > < name >广东</ name > < cities > < city >广州</ city > < city >深圳</ city > < city >珠海</ city > </ cities > </ province > < province > < name >台湾</ name > < cities > < city >台北</ city > < city >高雄</ city > </ cities > </ province > < province > < name >新疆</ name > < cities > < city >乌鲁木齐</ city > </ cities > </ province > </ country >用JSON表示如下:
{ "name":"中国", "province":[{"name":"黑龙江","cities":{"city":["哈尔滨","大庆"]}}, {"name":"广东","cities":{"city":["广州","深圳","珠海"]}}, {"name":"台湾","cities":{"city":["台北","高雄"]}}, {"name":"新疆","cities":{"city":["乌鲁木齐"]}} ] }-------------------------------------------------------------------------
这么看挺简单的
3.NET操作JSON
JSON文件读入到内存中就是字符串,.NET操作JSON就是生成与解析JSON字符串。操作JSON通常有以下几种方式:
1. 原始方式:自己按照JSON的语法格式,写代码直接操作JSON字符串。如非必要,应该很少人会走这条路,从头再来的。
2. 通用方式:这种方式是使用开源的类库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):
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; } }---------------------------------------------------------------------
4. 内置方式:使用.NET Framework 3.5/4.0中提供的System.Web.Script.Serialization命名空间下的JavaScriptSerializer类进行对象的序列化与反序列化,很直接。
Project p = new Project() { Input = " stone ", Output = " gold " }; JavaScriptSerializer serializer = new JavaScriptSerializer(); var json = serializer.Serialize(p); Console.WriteLine(json); var p1 = serializer.Deserialize<Project>(json); Console.WriteLine(p1.Input + " => " + p1.Output); Console.WriteLine(ReferenceEquals(p,p1));
参考链接在这里:
http://www.cnblogs.com/zxlovenet/p/3566802.html
百科http://baike.baidu.com/link?url=4E4QlksKa3AIWx35bb-89laj_hBf-uq2VFu9rTV9-K7iKBaFjf0CVp2yeKWBpJls13IyyOpZD3TE1v47fkmhFq
转载于:https://www.cnblogs.com/Yesi/p/4500624.html