天天看點

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在js和java中的使用

這會導緻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);