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; }
}