本文目錄一覽:
- 1、json中包含json數組怎麼轉換成java對象
- 2、如何用java遞歸生成帶children的json串
- 3、java怎麼處理json格式數據
- 4、java怎麼得到json中的數據
- 5、如何java解析json數組
- 6、Java解析json數據
json中包含json數組怎麼轉換成java對象
下面是JSON轉pojo的工具類,複製就可以用了。
import java.util.List;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.ObjectMapper;
/**
* 淘淘商城自定義響應結構
*/
public class JsonUtils {
// 定義jackson對象
private static final ObjectMapper MAPPER = new ObjectMapper();
/**
* 將對象轉換成json字元串。
*/
public static String objectToJson(Object data) {
try {
return MAPPER.writeValueAsString(data);
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return null;
}
/**
* 將json結果集轉化為對象
*
* @param jsonData
* json數據
* @param clazz
* 對象中的object類型
* @return
*/
public static T T jsonToPojo(String jsonData, ClassT beanType) {
try {
T t = MAPPER.readValue(jsonData, beanType);
return t;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 將json數據轉換成pojo對象list
*/
public static T ListT jsonToList(String jsonData, ClassT beanType) {
JavaType javaType = MAPPER.getTypeFactory().constructParametricType(List.class, beanType);
try {
ListT list = MAPPER.readValue(jsonData, javaType);
return list;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
如何用java遞歸生成帶children的json串
這個問題有點沒意義,因為java已經有相應的jar了,不論是阿里的fastjson,還是gson,又或者是jackson,都是已經很成熟的jar了。如果非要自己去寫的話,就需要用到反射了。簡單來說,就是獲取對象的所有屬性。複雜說的話,要判斷對象的屬性,判斷屬性類型,判斷屬性值是否為null,判斷對象是否是有transient修飾,判斷字元串裡面是否有雙引號等等。然後通過StringBuffer或是StringBuilder去拼接字元串,來生成json串,至於是StringBuffer還是StringBuilder就看你的需要再決定了
java怎麼處理json格式數據
1、通過谷歌的Gson來進行解析:
json數據:sTotalString = {“message”:”success”,”result”:[{“surveyid”:”1″,”surveyname”:”B”}{surveyid”:”2″,”surveyname”:”C”}]};
2、通過json-org.jar包進行解析:
json數據:sTotalString = {“message”:”success”,”result”:[{“surveyid”:”1″,”surveyname”:”B”}{surveyid”:”2″,”surveyname”:”C”}]};
java怎麼得到json中的數據
如果不是Android開發環境的話,首先需要引入處理JSON數據的包:json-lib-2.2.3-jdk15.jar
Java樣常式序如下:
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class DoJSON {
public static void main(String[] args) {
JSONArray employees = new JSONArray(); //JSON數組
JSONObject employee = new JSONObject(); //JSON對象
employee.put(“firstName”, “Bill”); //按「鍵-值」對形式存儲數據到JSON對象中
employee.put(“lastName”, “Gates”);
employees.add(employee); //將JSON對象加入到JSON數組中
employee.put(“firstName”, “George”);
employee.put(“lastName”, “Bush”);
employees.add(employee);
employee.put(“firstName”, “Thomas”);
employee.put(“lastName”, “Carter”);
employees.add(employee);
System.out.println(employees.toString());
for(int i=0; iemployees.size(); i++) {
JSONObject emp = employees.getJSONObject(i);
System.out.println(emp.toString());
System.out.println(“FirstName :\t” + emp.get(“firstName”));
System.out.println(“LastName : \t” + emp.get(“lastName”));
}
}
}
運行效果:
[{“firstName”:”Bill”,”lastName”:”Gates”},{“firstName”:”George”,”lastName”:”Bush”},{“firstName”:”Thomas”,”lastName”:”Carter”}]
{“firstName”:”Bill”,”lastName”:”Gates”}
FirstName : Bill
LastName : Gates
{“firstName”:”George”,”lastName”:”Bush”}
FirstName : George
LastName : Bush
{“firstName”:”Thomas”,”lastName”:”Carter”}
FirstName : Thomas
LastName : Carter
如何java解析json數組
工具/原料
安裝有eclipse軟體的電腦一台
方法/步驟
1
首先我們在eclipse中創建一個java工程,在java工程中創建一個HelloWorld的類,在這個java的入口程序中,我們來創建一個json字元串,並且列印出來,如下圖:
2
將我們剛剛創建的json字元串列印出來如下所示,可以看出這個json包含了一個大json對象,大json對象裡面又包含一個json數組,一個數組裡面又包含三個json對象,如下圖:
3
在java中我們要解析json數組必須藉助第三方包,所以這裡我們載入一下第三方包,首先我們將滑鼠移動到項目名稱上面去,然後右鍵召喚出右鍵快捷菜單,然後依次點擊Build Path-Configure Build Paht…,如下圖:
4
然後我們按照圖中紅色方框所示點擊Libraries,然後點擊Add Library…,如下圖所示:
5
然後我們繼續按照圖中所示點擊User Library,然後點擊Next,如下圖:
6
然後我們繼續按照圖中紅色方框所示點擊User Libraries…,如下圖:
7
然後我們點擊New…,來開始創建我們自己的libraries,如下圖:
8
然後我們輸入我們自己jar庫的名字,這裡我使用了jsonjar作為我們的名字,如下圖:
9
接下來為我們的jar庫添加jar包,我們按照下圖中紅色方框所示點擊「Add External JARs」,如下圖:
10
我們添加json相關的jar包,這裡涉及json的第三方包主要包括這七個,所以我們把這七個包都引入到我們自己的jar庫中去,如下圖:
11
返回到User Libraries中發現,我們已經引入了所有的jar包,如下圖:
我們按照下圖中紅色方框所示畫勾,然後點擊finish,如下圖:
然後我們按照圖中紅色邊框所示點擊Apply,然後點擊OK,如下圖:
回到我們的工程中,從工程目錄中我們可以看到,我們已經添加了自己的名字為jsonjar的jar庫,如下圖:
接下來我們回到程序中,在頭部添加「import net.sf.json.JSONArray;import net.sf.json.JSONObject;」這兩句代碼,這兩句表示引入了解析json的對象和數組的包,如下圖:
然後我們通過代碼「JSONObject.fromObject(json_array)」來將我們之前創建的json字元串轉換成json對象,並且通過鍵值對的方式列印出json對象名字為「employees」的值,如下圖:
列印出的名字為「employees」的json對象的值如下圖是一個數組字元串,如下圖:
接下來我們通過代碼「jsonobj.getJSONArray(“employees”)」來將獲取的數組字元串轉變成為json組數,如下圖:
並且我們列印出json數組的長度,可見程序計算的json數組的長度和我們實際的數組長度相一致,如下圖:
接下來我們通過一個for循環將我們獲取的json數組中的值依次取出來,由於數組中又包含3個對象,我們又需要將3個對象使用代碼「JSONObject.fromObject(jsonarr.get(i));」將得到的對象字元串變成對象然後再取出來,如下圖:
最後,我們將json數組的所有內容都展示到控制台,這樣我們就可以使用java通過第三方json包來解析json數組了,如下圖:
Java解析json數據
一、 JSON (JavaScript Object Notation)一種簡單的數據格式,比xml更輕巧。
Json建構於兩種結構:
1、「名稱/值」對的集合(A collection of name/value pairs)。不同的語言中,它被理解為對象(object),紀錄(record),結構(struct),字典(dictionary),哈希表(hash table),有鍵列表(keyed list),或者關聯數組 (associative array)。 如:
{
「name」:」jackson」,
「age」:100
}
2、值的有序列表(An ordered list of values)。在大部分語言中,它被理解為數組(array)如:
{
「students」:
[
{「name」:」jackson」,「age」:100},
{「name」:」michael」,」age」:51}
]
}
二、java解析JSON步驟
A、伺服器端將數據轉換成json字元串
首先、伺服器端項目要導入json的jar包和json所依賴的jar包至builtPath路徑下(這些可以到JSON-lib官網下載:)
然後將數據轉為json字元串,核心函數是:
public static String createJsonString(String key, Object value)
{
JSONObject jsonObject = new JSONObject();
jsonObject.put(key, value);
return jsonObject.toString();
}
B、客戶端將json字元串轉換為相應的javaBean
1、客戶端獲取json字元串(因為android項目中已經集成了json的jar包所以這裡無需導入)
public class HttpUtil
{
public static String getJsonContent(String urlStr)
{
try
{// 獲取HttpURLConnection連接對象
URL url = new URL(urlStr);
HttpURLConnection httpConn = (HttpURLConnection) url
.openConnection();
// 設置連接屬性
httpConn.setConnectTimeout(3000);
httpConn.setDoInput(true);
httpConn.setRequestMethod(“GET”);
// 獲取相應碼
int respCode = httpConn.getResponseCode();
if (respCode == 200)
{
return ConvertStream2Json(httpConn.getInputStream());
}
}
catch (MalformedURLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return “”;
}
private static String ConvertStream2Json(InputStream inputStream)
{
String jsonStr = “”;
// ByteArrayOutputStream相當於內存輸出流
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
// 將輸入流轉移到內存輸出流中
try
{
while ((len = inputStream.read(buffer, 0, buffer.length)) != -1)
{
out.write(buffer, 0, len);
}
// 將內存流轉換為字元串
jsonStr = new String(out.toByteArray());
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return jsonStr;
}
}
2、獲取javaBean
public static Person getPerson(String jsonStr)
{
Person person = new Person();
try
{// 將json字元串轉換為json對象
JSONObject jsonObj = new JSONObject(jsonStr);
// 得到指定json key對象的value對象
JSONObject personObj = jsonObj.getJSONObject(“person”);
// 獲取之對象的所有屬性
person.setId(personObj.getInt(“id”));
person.setName(personObj.getString(“name”));
person.setAddress(personObj.getString(“address”));
}
catch (JSONException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return person;
}
public static ListPerson getPersons(String jsonStr)
{
ListPerson list = new ArrayListPerson();
JSONObject jsonObj;
try
{// 將json字元串轉換為json對象
jsonObj = new JSONObject(jsonStr);
// 得到指定json key對象的value對象
JSONArray personList = jsonObj.getJSONArray(“persons”);
// 遍歷jsonArray
for (int i = 0; i personList.length(); i++)
{
// 獲取每一個json對象
JSONObject jsonItem = personList.getJSONObject(i);
// 獲取每一個json對象的值
Person person = new Person();
person.setId(jsonItem.getInt(“id”));
person.setName(jsonItem.getString(“name”));
person.setAddress(jsonItem.getString(“address”));
list.add(person);
}
}
catch (JSONException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
原創文章,作者:BIRU,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/146512.html