JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。
JSON建构于两种结构:
- “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
- 值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。
JSON具有以下这些形式:
对象是一个无序的“‘名称/值’对”集合。一个对象以 {
左括号 开始, }
右括号 结束。每个“名称”后跟一个 :
冒号 ;“‘名称/值’ 对”之间使用 ,
逗号 分隔。
数组是值(value)的有序集合。一个数组以 [
左中括号 开始, ]
右中括号 结束。值之间使用 ,
逗号 分隔。
值(value)可以是双引号括起来的字符串(string)、数值(number)、true
、false
、 null
、对象(object)或者数组(array)。这些结构可以嵌套。
Product product = new Product(); product.Name = "Apple"; product.Expiry = new DateTime(2008, 12, 28); product.Sizes = new string[] { "Small" }; string json = JsonConvert.SerializeObject(product); // { // "Name": "Apple", // "Expiry": "2008-12-28T00:00:00", // "Sizes": [ // "Small" // ] // }
//创建Json数据
static string CreateJson()
{
//创建一个Json对象JObject
JObject J=new JObject();
//添加数据的方式
J["id"] = 123456;
J["name"] = "张三";
J.Add("sex", "男");
//创建一个Json数组并添加数据
JArray JArray=new JArray();
JArray.Add("red");
JArray.Add("blue");
JArray.Add("yellow");
J.Add("color", JArray);
string str=J.ToString();
//Console.WriteLine(str);
return str;
}
static void Main(string[] args)
{
//Console.WriteLine("Hello, World!");
GetJson(CreateJson());
}
//解析Json数据
static void GetJson(string strjson)
{
//将字符串转化为Json对象
JObject j = JObject.Parse(strjson);
//提取字段
//1.索引器
int id = (int)j["id"];
Console.WriteLine(id);
//2.通过方法 GetValue指定键获取值
string str= (string)j.GetValue("name");
Console.WriteLine(str);
//
//JArray jArray = new JArray(j["color"]);//[[,"red","blue","yellow",]]
//for (int i = 0; i < jArray.Count; i++)
//{
// Console.WriteLine(jArray[i]);
//}
foreach (var item in j["color"])
{
Console.WriteLine(item);
}