json在js和java中的使用
阿新 • • 發佈:2019-01-05
在程式語言中,只要有了陣列(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);