包含javajsondatabind的詞條

本文目錄一覽:

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

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
BIRU的頭像BIRU
上一篇 2024-10-31 15:30
下一篇 2024-10-31 15:30

相關推薦

發表回復

登錄後才能評論