gson解析json示例源碼,gson解析json字符串

本文目錄一覽:

用gson如何處理json轉換Timestamp類型

原代碼: private static final Gson GSON = new Gson();

新代碼:private static final Gson GSON = new GsonBuilder().setDateFormat(yyyy-MM-dd HH:mm:ss).create();

改後測試了一下,竟然不起作用,奇怪!接着dubug了一下,發現原來因為使用了hibernate,對象中的日期類型時timestamp類型。上面的設置沒起作用。接着又找了一下,還有對應方案如下

StringdfString=format.format(newDate(ts.getTime()));returnnewJsonPrimitive(dfString);}publicTimestampdeserialize(JsonElementjson,Typet,JsonDeserializationContextjsc)throwsJsonParseException{if(!(jsoninstanceofJsonPrimitive)){thrownewJsonParseException(

Android使用Gson解析網絡接口返回的Json數據

Gson挺好用的,可以把json串直接解析成bean對象,或者把對象轉換成json串,數據解析的時候先創建Gson對象

Gson mGson = new Gson();

然後再把json串解析成bean對象

Bean bean = mGson.fromJson(json, Bean.class);

如果想把對象轉成json串可以用gson的toJson方法

String json = mGson.toJson();

純手打,滿意請採納

gson怎麼解析jsonarray

Json是一種類似於XML的通用數據交換格式,具有比XML更高的傳輸效率.

從結構上看,所有的數據(data)最終都可以分解成三種類型:

第一種類型是標量(scalar),也就是一個單獨的字符串(string)或數字(numbers),比如”北京”這個單獨的詞。

第二種類型是序列(sequence),也就是若干個相關的數據按照一定順序並列在一起,又叫做數組(array)或列表(List),比如”北京,上海”。

第三種類型是映射(mapping),也就是一個名/值對(Name/value),即數據有一個名稱,還有一個與之相對應的值,這又稱作散列(hash)或字典(dictionary),比如”首都:北京”。

Json的規格非常簡單,只用一個頁面幾百個字就能說清楚,而且Douglas Crockford聲稱這個規格永遠不必升級,因為該規定的都規定了。

1) 並列的數據之間用逗號(”,”)分隔。

2) 映射用冒號(”:”)表示。

3) 並列數據的集合(數組)用方括號(“[]”)表示。

4) 映射的集合(對象)用大括號(”{}”)表示。

在Android中可以使用Gson解析JSON數據

首先,從 code.google.com/p/google-gson/downloads/list下載GsonAPI:

google-gson-1.7.1-release.zip

把gson-1.7.jar copy到libs(項目根目錄新建一個libs文件夾)中。

可以使用以下兩種方法解析JSON數據:

通過獲取JsonReader對象解析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;

}

如何通過gson解析存儲的json數組字符串

引入gson-1.4.jar,(挺蛋疼的,不想自己研究這玩意,尋思網上直接找現成的Demo,結果沒有我想要的東西)

Gson中重要的幾個核心類:

Gson、JsonParser、JsonObject、JsonArray。

下面演示這兩個類之間的轉換過程:

import Java.util.ArrayList;

import java.util.HashMap;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

import com.google.gson.Gson;

import com.google.gson.JsonArray;

import com.google.gson.JsonElement;

import com.google.gson.JsonObject;

import com.google.gson.JsonParser;

public class GsonTest {

public static void main(String[] args) {

Map map = new HashMap();

map.put(“name”, “nam1”);

map.put(“age”, “12”);

List list = new ArrayList();

list.add(“name”);

list.add(“123”);

list.add(map);

//json格式的字符串

String str = “[{‘name’:’kevin’,’age’:25},{‘name’:’cissy’,’age’:24}]”;

//創建一個Gson對象

Gson gson = new Gson();

//把java對象轉換成Json字符串。

String jsonStr = gson.toJson(map);

System.out.println(jsonStr);

//把集合對象轉換成Json字符串

jsonStr = gson.toJson(list);

System.out.println(jsonStr);

//創建一個JsonParser

JsonParser parser = new JsonParser();

//通過JsonParser對象可以把json格式的字符串解析成一個JsonElement對象

JsonElement el = parser.parse(str);

//把JsonElement對象轉換成JsonObject

JsonObject jsonObj = null;

if(el.isJsonObject()){

jsonObj = el.getAsJsonObject();

}

//把JsonElement對象轉換成JsonArray

JsonArray jsonArray = null;

if(el.isJsonArray()){

jsonArray = el.getAsJsonArray();

}

//遍歷JsonArray對象

MyField field = null;

Iterator it = jsonArray.iterator();

while(it.hasNext()){

JsonElement e = (JsonElement)it.next();

//JsonElement轉換為JavaBean對象

field = gson.fromJson(e, MyField.class);

System.out.println(field.getName()+” === “+field.getAge());

}

}

}

class MyField {

private String name;

private Integer age;

public MyField() {

}

public MyField(String name, Integer age) {

super();

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public Integer getAge() {

return age;

}

public void setAge(Integer age) {

this.age = age;

}

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/181348.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-23 06:40
下一篇 2024-11-23 06:40

相關推薦

  • Python字符串寬度不限制怎麼打代碼

    本文將為大家詳細介紹Python字符串寬度不限制時如何打代碼的幾個方面。 一、保持代碼風格的統一 在Python字符串寬度不限制的情況下,我們可以寫出很長很長的一行代碼。但是,為了…

    編程 2025-04-29
  • Python中將字符串轉化為浮點數

    本文將介紹在Python中將字符串轉化為浮點數的常用方法。在介紹方法之前,我們先來思考一下這個問題應該如何解決。 一、eval函數 在Python中,最簡單、最常用的將字符串轉化為…

    編程 2025-04-29
  • Java判斷字符串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字符串中是否存在多個指定字符: 一、字符串遍歷 字符串是Java編程中非常重要的一種數據類型。要判斷字符串中是否存在多個指定字符…

    編程 2025-04-29
  • Python學習筆記:去除字符串最後一個字符的方法

    本文將從多個方面詳細闡述如何通過Python去除字符串最後一個字符,包括使用切片、pop()、刪除、替換等方法來實現。 一、字符串切片 在Python中,可以通過字符串切片的方式來…

    編程 2025-04-29
  • 雲智直聘 源碼分析

    本文將會對雲智直聘的源碼進行分析,包括前端頁面和後端代碼,幫助讀者了解其架構、技術實現以及對一些常見的問題進行解決。通過本文的閱讀,讀者將會了解到雲智直聘的特點、優勢以及不足之處,…

    編程 2025-04-29
  • 北化教務管理系統介紹及開發代碼示例

    本文將從多個方面對北化教務管理系統進行介紹及開發代碼示例,幫助開發者更好地理解和應用該系統。 一、項目介紹 北化教務管理系統是一款針對高校學生和教職工的綜合信息管理系統。系統實現的…

    編程 2025-04-29
  • 選擇大容量免費雲盤的優缺點及實現代碼示例

    雲盤是現代人必備的工具之一,雲盤的容量大小是選擇雲盤的重要因素之一。本文將從多個方面詳細闡述使用大容量免費雲盤的優缺點,並提供相應的實現代碼示例。 一、存儲空間需求分析 不同的人使…

    編程 2025-04-29
  • Python調字號: 用法介紹字號調整方法及示例代碼

    在Python中,調整字號是很常見的需求,因為它能夠使輸出內容更加直觀、美觀,並且有利於閱讀。本文將從多個方面詳解Python調字號的方法。 一、內置函數實現字號調整 Python…

    編程 2025-04-29
  • Python如何將字符串1234變成數字1234

    Python作為一種廣泛使用的編程語言,對於數字和字符串的處理提供了很多便捷的方式。如何將字符串「1234」轉化成數字「1234」呢?下面將從多個方面詳細闡述Python如何將字符…

    編程 2025-04-29
  • Python int轉二進制字符串

    本文將從以下幾個方面對Python中將int類型轉換為二進制字符串進行詳細闡述: 一、int類型和二進制字符串的定義 在Python中,int類型表示整數,二進制字符串則是由0和1…

    編程 2025-04-29

發表回復

登錄後才能評論