在工作中我們常常使用json來存儲和傳輸結(jié)構(gòu)化的數(shù)據(jù),如用戶信息、配置信息等。它通常以string的方式進行傳輸,因此如何將string解析并得到我們想要的信息是一項必備且常用的功能。
JSON(JavaScript Object Notation)是一種輕量級的、基于文本的、與語言無關的數(shù)據(jù)交換格式,易于人和機器讀寫。JSON可以表示兩種結(jié)構(gòu)化類型:對象和數(shù)組。對于每一個對象,它內(nèi)部的值可以是字符串、整數(shù)、布爾值、空值,以及json對象和數(shù)組。下面是來自維基百科的簡單示例,它顯示了描述一個人的對象的JSON 表示。該對象具有名字和姓氏的字符串值、年齡的數(shù)字值、表示人地址的對象值以及電話號碼對象的數(shù)組值。我們將以此為例說明如何在java中解析它。
示例:
{
"firstName": "John",
"lastName": "Smith",
"age": 25,
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": 10021
},
"phoneNumbers": [
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "fax",
"number": "646 555-4567"
}
]
}
引入使用的包:
//引入解析json常用的包
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.*;
//將jsonStr中的數(shù)據(jù)提取出來,轉(zhuǎn)化成Person類,Person類已經(jīng)根據(jù)json的格式設定好
public static Person jsonParse(String jsonStr){
//將json string轉(zhuǎn)化為json object
JSONObject jo = new JSONObject(jsonStr);
//初始化目標值
Person person = new Person();
//獲取值為String類型的成員變量
String firstName = jo.getString("firstName");
String lastName = jo.getString("lastName");
person.setFirstName(firstName);
person.setLastName(lastName);
//獲取值為int類型的成員變量
int age = jo.getInt("age");
person.setAge(age);
//獲取值為Object類型的成員變量(如上套娃)
//Address類已經(jīng)根據(jù)json的格式設定好
JSONObject addressObj = jo.getJSONObject("address");
Address address = new Address();
String streetAddress = addressObj.getString("addressObj");
address.setStreetAddress(streetAddress);
...
person.setAddress(address);
//獲取值為array類型的成員變量
//PhoneNumber類已經(jīng)根據(jù)json的格式設定好
List<PhoneNumber> phoneNumbers = new ArrayList<PhoneNumber>();
JSONArray phoneNumbersjson = jo.getJSONArray("phoneNumbers");
for(int i=0;i<phoneNumbersjson.length();i++){
//套娃解析其中每一個對象
PhoneNumber phoneNumber = new PhoneNumber();
JSONObject phoneNumberObj = phoneNumbersjson.getJSONObject(i);
String type = phoneNumberObj.getString("type");
phoneNumber.setType(type);
String number = phoneNumberObj.getString("number");
phoneNumber.setType(number);
//將解析好的對象加入數(shù)組
phoneNumbers.add(phoneNumber);
}
person.setPhoneNumbers(phoneNumbers);
}
json的結(jié)構(gòu),無非是值,或者對象和數(shù)組的反復套娃,將這三種類型的解析方法掌握了,便不怕任何復雜結(jié)構(gòu)的json了。是不是很簡單?文章來源:http://www.zghlxwxcb.cn/news/detail-508625.html
Reference:
https://www.geeksforgeeks.org/parse-json-java/文章來源地址http://www.zghlxwxcb.cn/news/detail-508625.html
到了這里,關于五分鐘學會如何用java解析json字符串!的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!