JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度。
JSON就是一串字符串 只不过元素会使用特定的符号标注。
{} 双括号表示对象
[] 中括号表示数组
"" 双引号内是属性或值
: 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象)
所以 {"name": "Michael"} 可以理解为是一个包含name为Michael的对象
而[{"name": "Michael"},{"name": "Jerry"}]就表示包含两个对象的数组
当然了,你也可以使用{"name":["Michael","Jerry"]}来简化上面一步,这是一个拥有一个name数组的对象。
ps:现在还有很多人存在一些误区,为什么{name:'json'}在检验时通过不了,那是因为JSON官网最新规范规定:
如果是字符串,那不管是键或值最好都用双引号引起来,所以上面的代码就是{"name":"json"}。
下面是一个json字符串,先去验证JSON数据格式(http://www.bejson.com/)如下:
{ "items_custom_get_response": { "items": { "item": [ { "num_iid": 1, "product_id": 0, "skus": [ { "created": null, "modified": null, "outer_id": null, "price": null, "properties": null, "properties_name": "黑色", "quantity": "2", "sku_id": null } ] } ] } } }
如果需要拿来用,肯定要反序列化,序列化成实体,结构如下:
public class Rootobject { public Items_Custom_Get_Response items_custom_get_response { get; set; } } public class Items_Custom_Get_Response { public Items items { get; set; } } public class Items { public List<Item> item { get; set; } } public class Item { public int num_iid { get; set; } public int product_id { get; set; } public List<Sku> skus { get; set; } } public class Sku { public object created { get; set; } public object modified { get; set; } public object outer_id { get; set; } public object price { get; set; } public object properties { get; set; } public string properties_name { get; set; } public string quantity { get; set; } public object sku_id { get; set; } }
使用VS2013或者2015可以快速生成对应的实体,就不需要自己动手写代码了。步骤如下:
1、复制json字符串,然后选择编辑->选择性粘贴->将JSON粘贴为类。 然后就在类文件中生成下面文件:
public class Rootobject { public Items_Custom_Get_Response items_custom_get_response { get; set; } } public class Items_Custom_Get_Response { public Items items { get; set; } } public class Items { public Item[] item { get; set; } } public class Item { public int num_iid { get; set; } public int product_id { get; set; } public Sku[] skus { get; set; } } public class Sku { public object created { get; set; } public object modified { get; set; } public object outer_id { get; set; } public object price { get; set; } public object properties { get; set; } public string properties_name { get; set; } public string quantity { get; set; } public object sku_id { get; set; } }