json的含义及使用
JSON(JavaScript对象表示法 JavaScript Object Notation),是存储和交换文本信息的语法,轻量级的文本数据交换格式,类似XML,但是比XML更小、更快、更容易解析。
JSON独立于各种编程语言平台,并且几乎所有的主流编程语言都内置了对JSON数据格式的支持。
JSON语法规则
1、数据以名/值 对的形式表示
2、数据之间以逗号分隔
3、花括号保存对象
4、方括号保存数组
JSON值
JSON名值对包括字段名称(包含在双引号中),后面一个冒号,然后是值,如:
"username": "Jessica"
JSON值可以包含以下多种类型:
数字(整数和浮点数)
字符串(在双引号中)
逻辑值(true或false)
数组(在方括号中)
对象(在花括号中)
null
JSON对象包含在花括号中,可以包含多个名/值对,其值可以为数组;JSON数组包含在方括号中,可以包含多个对象。JSON既可以以花括号开头,也可以以方括号开头,JSON对象和JSON数组可以互相嵌套,如:
{
"users": [
{"username":"yzy",age:30},
{"username":"yzy1",age:23},
{"username":"yzy2",age:42}
]
}
JSON解析和序列化
早期的JSON解析器基本上就是使用JavaScript的eval()函数。由于JSON是JavaScript语法的子集,因此eval()函数可以解析并返回JavaScript对象和数组。
ECMAScript 5对解析JSON的行为进行了规范,定义了全局对象JSON。
关于后台json的使用
1、json有两种格式
(1)、对象
例子:{"key1":value1,"key2":value2,"key3":value3,...}
(2)、数组
例子:[{"key1":value1,"key2":value2,"key3":value3},{"key1":value1,"key2":value2,"key3":value3}...]
后台实例:
public static <T> T parseJSON(String json, Type type) {
Gson gson = new Gson();
T info = gson.fromJson(json, type);
return info;
}
public static void main(String[] args) {
Gson gson = new Gson();
jsonModel j = new jsonModel();
j.setAge(11);
j.setName("哈雷路亚");
j.setId(23);
//json生成对象
String json = gson.toJson(j);
System.out.println("生成对象:"+json);
//json生成对象数组
List<jsonModel> list=new ArrayList<jsonModel>();
list.add(j);
jsonModel j1=new jsonModel();
j1.setAge(56);
j1.setName("你好");
j1.setId(89);
list.add(j1);
String json2 = gson.toJson(list);
System.out.println("生成数组:"+json2);
//gron解析json对象字符串
String age = "";
String id = "";
String name = "";
String title1 = "{'age':'11','name':'哈雷路亚','id':'23'}";
List<JSONObject> listGson=new ArrayList<JSONObject>();
JSONObject result = gson.fromJson(title1, JSONObject.class);
age = result.getAge();
id = result.getId();
name = result.getName();
System.out.println(age+","+id+","+name);
//gron解析json对象数组字符串
List<JSONObject> info = new ArrayList<JSONObject>();
String title = "[{'age':'11','name':'哈雷路亚','id':'23'},{'age':'21','name':'哈1亚','id':'2223'}]";
try {
info = parseJSON(title, new TypeToken<ArrayList<JSONObject>>() {}.getType());
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
关于前端json的使用
使用JSON.parse()把字符串解析为JSON对象或数组。
//返回JSON对象 log格式化输出log内容
var jsonStr1 = '{"username":"Jessica","age":23}';
var jsonObj = JSON.parse(jsonStr1);
console.log(jsonObj.username); //Jessica
console.log(jsonObj.age) //23
//返回JSON数组
var jsonStr2 = '[{"username":"Jacky","age":30}, {"username":"Jessica","age":23}]';
var jsonArr = JSON.parse(jsonStr2);
for(var i=0;i<jsonArr.length;i++) {
console.log(jsonArr[i].username); //Jacky Jessica
JSON序列化
使用JSON.stringify()把JSON对象或数组序列化为字符串。
//序列化JSON对象 log格式化输出log内容
var jsonObj = {
"username": "Jessica",
"age": 23
};
var jsonStr1 = JSON.stringify(jsonObj);
console.log(jsonStr1); //{"username":"Jessica","age":23}
//序列化JSON数组
var jsonArr = [
{"username":"Jacky","age":30},
{"username":"Jessica","age":23}
];
var jsonStr2 = JSON.stringify(jsonArr, null, 2);
console.log(jsonStr2);
/* 输出结果:
[
{
"username": "Jacky",
"age": 30
},
{
"username": "Jessica",
"age": 23
}
]
*/