1. 程式人生 > >json在js和java中的使用

json在js和java中的使用

在程式語言中,只要有了陣列(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);