1. 程式人生 > >json的含義及使用

json的含義及使用

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
  }
]
*/