在程式設計語言中,隻要有了數組(array)和對象(object)就能夠儲存一切資料,同時在不同的語言之間進行資料交換的時候,傾向于使用字元串,因為字元串在各個語言中的處理方式大緻相同,那麼JSON的誕生也就在情理之中了。
JSON的優勢在于:
(1).JSON是純文字格式,是獨立于語言和平台的。
(2).生成和解析相對于XML而言要簡單。
(3).讀寫的速度更快。
json的格式:
1.{}包裹,裡面必須是鍵值對,鍵是string類型,值可以為任意類型
'{"class":"二年一班","students":[{"name":"小王","age":"18","gender":"male"},{"name":"小紅","age":"16","gender":"female"}],"array":[20,21,22]}'
2.[]包裹,裡面是數組,可以是{}包裹的對象數組,也可以是字元串,數字組成的數組,但裡面的類型最好是一樣的,不然背景接收時不好解析
'[{"name":"小王","age":"18","gender":"male"},{"name":"小紅","age":"16","gender":"female"}]';
'[10,20,30]'
js拼接json
有時前台給背景傳資料,會使用json格式,這就需要前台将json生成好
{}中要用鍵值法放入資料,[]中用push放資料
var obj={};
obj.className="二年一班";
obj.studentsNum=5;
var students = [];
for(var i=0;i<5;i++){
var student={};
student.name="小王"+i;
student.age=15+i;
students.push(student)
}
obj.students=students;
var jsonstr=JSON.stringify(obj)
console.log(jsonstr)
生成的json字元串為:
{"className":"二年一班","studentsNum":5,"students":[{"name":"小王0","age":15},{"name":"小王1","age":16},{"name":"小王2","age":17},{"name":"小王3","age":18},{"name":"小王4","age":19}]}
注意,雖然js中數組有個叫關聯數組的,裡面也可以用鍵值對方法放入資料,但在json中不建議使用,如:
var a=[];
a.name=10;
a.push("b")
console.log(a)
生成這個東西

這會導緻json格式混亂。
總結:{}中要用鍵值法放入資料,鍵為字元串,值可以任意格式,[]中用push放資料,可以是對象數組,也可以使字元串、數字數組,但數組裡的資料類型最好要統一
js中json字元換和對象的轉換
1.字元串轉對象
用JSON.parse(string)
var jsonstr='[{"name":"小王","age":"18","gender":"male"},{"name":"小紅","age":"16","gender":"female"}]';
var jsonobj=JSON.parse(jsonstr);
console.log(jsonobj)
2.對象轉字元串
用JSON.stringify(obj)
var jsonstr1='{"class":"二年一班","students":[{"name":"小王","age":"18","gender":"male"},{"name":"小紅","age":"16","gender":"female"}],"array":[20,21,22]}'
var jsonobj1=JSON.parse(jsonstr1);
var jsonstr2=JSON.stringify(jsonobj1)
java中生成json
背景将資料傳給前台,使用最多的格式就是使用json
一般使用map傳回,map中插入查詢結果,最後使用JSON.toJSONString(map)生成json
@ResponseBody
@RequestMapping(value = "getOrderPartsNum", produces = "text/plain;charset=UTF-8")
public String getOrderPartsNum(@RequestParam Map<String, String> params) {
Map<String,Object> result=new HashMap<String,Object>();
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
try {
list = statisticsManagerService.getOrderPartsList(params);
result.put("data",list);
result.put("msg","查詢成功");
result.put("code","1")
} catch (Exception e) {
e.printStackTrace();
result.put("msg","查詢失敗");
result.put("code","0")
}
return JSON.toJSONString(result);
}
java解析json字元串生成map
如果json是{}包裹的對象,則轉成Map<String,Object>格式
Map<String,Object> obj = JSONObject.parseObject(json,Map.class);
如果json是[]包裹的資料,則轉成list集合,集合的類型根據資料類型而定
List<Map> punishList=JSONObject.parseArray(json,Map.class);