當前位置:九游会j9娱乐平台-九游ag登录中心网址 » 安卓系統 » androidlist轉json

androidlist轉json-九游会j9娱乐平台

發布時間: 2024-07-15 17:34:11

1. android 解析json用那個包裡面的方法比較好呢

android 解析json還有用google出品的gson比較好,具體步驟為:
1、首先,從 code.google.com/p/google-gson/downloads/list下載gsonapi:
google-gson-1.7.1-release.zip 把gson-1.7.jar 到libs(項目根目錄新建一個libs文件夾)中。 可以使用以下兩種方法解析json數據,通過獲取jsonreader對象解析json數據。
代碼如下:
string jsondata = "[{\"username\":\"arthinking\",\"userid\":001},{\"username\":\"jason\",\"userid\":002}]";
try{
jsonreader reader = new jsonreader(new stringreader(jsondata));
reader.beginarray();
while(reader.hasnext()){
reader.beginobject();
while(reader.hasnext()){
string tagname = reader.nextname();
if(tagname.equals("username")){
system.out.println(reader.nextstring());
}
else if(tagname.equals("userid")){
system.out.println(reader.nextstring());
}
}
reader.endobject();
}
reader.endarray();
}
catch(exception e){
e.printstacktrace();
}
2、使用gson對象獲取user對象數據進行相應的操作:
代碼如下:

type listtype = new typetoken>(){}.gettype();
gson gson = new gson();
linkedlist users = gson.fromjson(jsondata, listtype);
for (iterator iterator = users.iterator(); iterator.hasnext();) {
user user = (user) iterator.next();
system.out.println(user.getusername());
system.out.println(user.getuserid());
}
3、如果要處理的json字元串只包含一個json對象,則可以直接使用fromjson獲取一個user對象:
代碼如下:

string jsondata = "{\"username\":\"arthinking\",\"userid\":001}";
gson gson = new gson();
user user = gson.fromjson(jsondata, user.class);
system.out.println(user.getusername());
system.out.println(user.getuserid());

2. android如何將list轉化為json

可以通過jsonobject作為中間轉換橋梁,先把你的list轉換為jsonobject,然後jsonobject tostring(),即可轉換為json字元串。但是過於復雜的map對象貌似不行,這樣你就只有自己寫了

3. 解析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 ;
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 list getpersons(string jsonstr)
{
list list = new arraylist();

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;
}

4. android怎麼把json轉換為hashmap

在android中把json轉換為hashmap,代碼如下:
import java.util.hashmap;
import java.util.iterator;
import java.util.list;
import java.util.map;
import java.util.map.entry;

import net.sf.json.jsonarray;
import net.sf.json.jsonexception;
import net.sf.json.jsonobject;

import com.wideyou.model.expressorder;
import com.wideyou.warehouse.model.storage;

public class helperfunction {
public expressorder expressorderclasscast(jsonobject reserjson){
expressorder expressorder=new expressorder();
expressorder.setcid(integer.parseint(reserjson.getstring("userid")));
expressorder.setsendperson(reserjson.getstring("sendperson"));
expressorder.setsendphone(reserjson.getstring("sendphone"));
expressorder.setsendaddress(reserjson.getstring("sendaddress"));
expressorder.setbeginaddress(reserjson.getstring("beginaddress"));
expressorder.setotherdes(reserjson.getstring("otherdes"));
expressorder.setendaddress(reserjson.getstring("endaddress"));
expressorder.setreservperson(reserjson.getstring("reservperson"));
expressorder.setreservphone(reserjson.getstring("reservphone"));
expressorder.setreservaddress(reserjson.getstring("reservaddress"));
expressorder.setpostcode(reserjson.getstring("reservaddress"));
expressorder.setpayid(integer.parseint(reserjson.getstring("payid")));
return expressorder;
}

public storage storageclasscast(jsonobject reserjson){
storage storage=new storage();
storage.setsname(reserjson.getstring("sname"));
storage.setcount(integer.parseint(reserjson.getstring("count")));
return storage;
}

public static int getcid(jsonobject reserjson, boolean isconsumer){
if(isconsumer){
return integer.parseint(reserjson.getstring("userid"));
}else{
return integer.parseint(reserjson.getstring("memberid"));
}
}
//map轉換為json字元串
public static string hashmaptojson(hashmap map) {
string string = "{";
for (iterator it = map.entryset().iterator(); it.hasnext();) {
entry e = (entry) it.next();
string = "'" e.getkey() "':";
string = "'" e.getvalue() "',";
}
string = string.substring(0, string.lastindexof(","));
string = "}";
return string;
}

public static void jsonobject2hashmap(jsonobject jo, list> rstlist) {
for (iterator keys = jo.keys(); keys.hasnext();) {
try {
string key1 = keys.next();
system.out.println("key1---" key1 "------" jo.get(key1)
(jo.get(key1) instanceof jsonobject) jo.get(key1)
(jo.get(key1) instanceof jsonarray));
if (jo.get(key1) instanceof jsonobject) {

jsonobject2hashmap((jsonobject) jo.get(key1), rstlist);
continue;
}
if (jo.get(key1) instanceof jsonarray) {
jsonarray2hashmap((jsonarray) jo.get(key1), rstlist);
continue;
}
system.out.println("key1:" key1 "----------jo.get(key1):"
jo.get(key1));
json2hashmap(key1, jo.get(key1), rstlist);

} catch (jsonexception e) {
e.printstacktrace();
}
}
}
public static void jsonarray2hashmap(jsonarray joarr,
list> rstlist) {
for (int i = 0; i < joarr.size(); i ) {
try {
if (joarr.get(i) instanceof jsonobject) {

jsonobject2hashmap((jsonobject) joarr.get(i), rstlist);
continue;
}
if (joarr.get(i) instanceof jsonarray) {

jsonarray2hashmap((jsonarray) joarr.get(i), rstlist);
continue;
}
system.out.println("excepton~~~~~");

} catch (jsonexception e) {
e.printstacktrace();
}

}

}
public static void json2hashmap(string key, object value,
list> rstlist) {
hashmap map = new hashmap();
map.put(key, value);
rstlist.add(map);
}

}

5. android 怎樣將數據以json格式保存在手機文件中

json是一種輕量級數據交換格式,可以包含對象和數組,以下是一個json字元串的示例:
{"key":[{"key1":"value1","key2":value2",...}]}

json只是一種數據交換格式,並不是存儲格式,所以只要你正確地組織好json字元串後,跟其他文件是一樣存儲的;

同時建議你,如果你存儲的數據量比較多的話,建議存儲在android系統自帶的sqlite資料庫中,這樣操作起數據來更方便簡單;如果數據量非常少,只有三五個欄位存儲,那樣使用android的sharedpreferences可能會是更好的選擇,希望你根據應用需求適當選用。

6. android 怎麼看json數據格式

給服務端發送請求後,服務端會返回一連串的數據,這些數據在大部分情況下都是xml格式或者json格式。然後json相對xml來說解析相對方便一些,所以先說說json的解析。
json的基本數據格式有這幾種:
1.一個json對象——jsonobject
{"name":"胡小威" , "age":20 , "male":true}
2.一個json數組——jsonarray
[{"name":"胡小威" , "age":20 , "male":true},{"name":"趙小亮" , "age":22 , "male":false}]
3.復雜一點的jsonobject
{"name":"胡小威", "age"=20, "male":true, "address":{"street":"嶽麓山南", "city":"長沙","country":"中國"}}
4.復雜一點的jsonarray
[
{"name":"胡小威", "age"=20, "male":true, "address":{"street":"嶽麓山南", "city":"長沙","country":"中國"}},
{"name":"趙小亮", "age"=22, "male":false, "address":{"street":"九州港", "city":"珠海","country":"中國"}}
]
5.來個更復雜的,這是我從愛幫公交上扒取的數據
{"buses":{"bus":[{"last_foot_dist":"0","time":"37","segments":{"segment":[{"line_name":"立珊專線(中南大學學生公寓-長沙火車站)","foot_dist":"362","stat_xys":"","stats":"嶽麓山南;湖南師大;二里半;嶽麓山北;市四醫院;華圖教育(太平街口);牛耳教育(南陽街口);韭菜園;曙光路口;長島路口;長沙火車站","end_stat":"長沙火車站","line_xys":"","line_dist":"7535","start_stat":"嶽麓山南"}]},"foot_dist":"362","dist":"7897"},{"last_foot_dist":"0","time":"41","segments":{"segment":[{"line_name":"旅1路(科教新村-長沙火車站)","foot_dist":"337","stat_xys":"","stats":"嶽麓山南;湖南師大;二里半;嶽麓山北;市四醫院;華圖教育(太平街口);蔡鍔中路口;韭菜園;喬庄;曙光路口;長島路口;五一東村;車站路口;長沙火車站","end_stat":"長沙火車站","line_xys":"","line_dist":"7822","start_stat":"嶽麓山南"}]},"foot_dist":"337","dist":"8159"}]}}

接下來是解析部分
一、直接解析
1.{"name":"胡小威" , "age":20 , "male":true}

java代碼
public void parsejsonobject(string json) {
try {
jsonobject jsonobject = new jsonobject(json);
string name = jsonobject.getstring("name");
int age = jsonobject.getint("age");
boolean male = jsonobject.getboolean("male");
//接下來該幹嘛幹嘛
} catch (jsonexception e) {
// todo auto-generated catch block
e.printstacktrace();
}
}

2.[{"name":"胡小威" , "age":20 , "male":true},{"name":"趙小亮" , "age":22 , "male":false}]

java代碼
public void parsejsonarray(string json) {
try {
jsonarray jsonarray = new jsonarray(json);
for (int i = 0; i < jsonarray.length(); i ) {
jsonobject = jsonarray.getjsonobject(i);
string name = jsonobject.getstring("name");
int age = jsonobject.getint("age");
boolean male = jsonobject.getboolean("male");
//接下來該幹嘛幹嘛
}
} catch (jsonexception e) {
// todo auto-generated catch block
e.printstacktrace();
}
}

3.{"name":"胡小威", "age"=20, "male":true, "address":{"street":"嶽麓山南", "city":"長沙","country":"中國"}}

java代碼
public void parsejsonperson(string json) {
try {
jsonobject jsonobject = new jsonobject(json);
string name = jsonobject.getstring("name");
int age = jsonobject.getint("age");
boolean male = jsonobject.getboolean("male");
jsonobject addressjson = jsonobject.getjsonobject("address");
string street = addressjson.getstring("street");
string city = addressjson.getstring("city");
string country = addressjson.getstring("country");
address address = new address(street, city, country);
person person = new person(name, age, male, address);
} catch (jsonexception e) {
// todo auto-generated catch block
e.printstacktrace();
}
}

4.
[
{"name":"胡小威", "age"=20, "male":true, "address":{"street":"嶽麓山南", "city":"長沙","country":"中國"}},
{"name":"趙小亮", "age"=22, "male":false, "address":{"street":"九州港", "city":"珠海","country":"中國"}}
]

java代碼
public void parsejsonarrayperson(string json) {
list persons = new arraylist();
try {
jsonarray = new jsonarray(json);
for (int i = 0; i < jsonarray.length(); i ) {
jsonobject = jsonarray.getjsonobject(i);
string name = jsonobject.getstring("name");
int age = jsonobject.getint("age");
boolean male = jsonobject.getboolean("male");
jsonobject addressjson = jsonobject.getjsonobject("address");
string street = addressjson.getstring("street");
string city = addressjson.getstring("city");
string country = addressjson.getstring("country");
address address = new address(street, city, country);
person person = new person(name, age, male, address);
persons.add(person);
log.v("juno", person.tostring());
}
} catch (jsonexception e) {
// todo auto-generated catch block
e.printstacktrace();
}
log.v("juno", persons.tostring());
}

5. {"buses":{"bus":[{"last_foot_dist":"0","time":"37","segments":{"segment":[{"line_name":"立珊專線(中南大學學生公寓-長沙火車站)","foot_dist":"362","stat_xys":"","stats":"嶽麓山南;湖南師大;二里半;嶽麓山北;市四醫院;華圖教育(太平街口);牛耳教育(南陽街口);韭菜園;曙光路口;長島路口;長沙火車站","end_stat":"長沙火車站","line_xys":"","line_dist":"7535","start_stat":"嶽麓山南"}]},"foot_dist":"362","dist":"7897"},{"last_foot_dist":"0","time":"41","segments":{"segment":[{"line_name":"旅1路(科教新村-長沙火車站)","foot_dist":"337","stat_xys":"","stats":"嶽麓山南;湖南師大;二里半;嶽麓山北;市四醫院;華圖教育(太平街口);蔡鍔中路口;韭菜園;喬庄;曙光路口;長島路口;五一東村;車站路口;長沙火車站","end_stat":"長沙火車站","line_xys":"","line_dist":"7822","start_stat":"嶽麓山南"}]},"foot_dist":"337","dist":"8159"}]}}

java代碼
public list parsejson(string str){
log.d("返回的json數據:", str);
list buslist = new arraylist();

try {
jsonobject jsonobject = new jsonobject(str);
jsonobject busesjson = jsonobject.getjsonobject("buses");
jsonarray busjsarray=busesjson.getjsonarray("bus");
for(int i=0;i jsonobject busjsobject = busjsarray.getjsonobject(i);
jsonobject segsjsobject=busjsobject.getjsonobject("segments");
jsonarray segjsarray=segsjsobject.getjsonarray("segment");
salution st=new salution();

for(int j=0;j if(j==0){
jsonobject segjsobject = segjsarray.getjsonobject(j);
st.setline_name1(segjsobject.getstring("line_name"));
log.d("line_name", segjsobject.getstring("line_name"));
st.setstats1(segjsobject.getstring("stats"));
st.setend_stat1(segjsobject.getstring("end_stat"));
st.setstart_stat1(segjsobject.getstring("start_stat"));
}
if(j==1){
jsonobject segjsobject = segjsarray.getjsonobject(j);
st.setline_name2(segjsobject.getstring("line_name"));
log.d("line_name", segjsobject.getstring("line_name"));
st.setstats2(segjsobject.getstring("stats"));
st.setend_stat2(segjsobject.getstring("end_stat"));
st.setstart_stat2(segjsobject.getstring("start_stat"));
}
}

buslist.add(st);
}
return buslist;
} catch (jsonexception e) {
// todo auto-generated catch block
e.printstacktrace();
}
return null;
}

這里我只是簡單獲取了幾個我想要的數據。

二、使用json類庫gson 來解析json
gson 是 google 提供的用來在 java 對象和 json 數據之間進行映射的 java 類庫。可以將一個 json 字元串轉成一個 java 對象,或者反過來。

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

java代碼
google-gson-1.7.1-release.zip

再把gson-1.7.jar 到libs
可以使用兩種方法解析

①、通過獲取jsonreader對象解析json數據:

java代碼
string jsondata = "[{\"username\":\"arthinking\",\"userid\":001},{\"username\":\"jason\",\"userid\":002}]";
try{
jsonreader reader = new jsonreader(new stringreader(jsondata));
reader.beginarray();
while(reader.hasnext()){
reader.beginobject();
while(reader.hasnext()){
string tagname = reader.nextname();
if(tagname.equals("username")){
system.out.println(reader.nextstring());
}
else if(tagname.equals("userid")){
system.out.println(reader.nextstring());
}
}
reader.endobject();
}
reader.endarray();
}
catch(exception e){
e.printstacktrace();
}

②、通過把json數據映射成一個對象,使用gson對象的fromjson()方法獲取一個對象數組進行操作
java代碼
type listtype = new typetoken>(){}.gettype();
gson gson = new gson();
linkedlist users = gson.fromjson(jsondata, listtype);
for (iterator iterator = users.iterator(); iterator.hasnext();) {
user user = (user) iterator.next();
system.out.println(user.getusername());
system.out.println(user.getuserid());
}

我一般是採用直接解析,添加類庫神馬的最討厭了···
還有,抱怨一下,iteye的編輯弱爆了!!!

轉載

熱點內容
matlab命令窗口和新建腳本 發布:2024-07-17 15:51:26 瀏覽:374
建ftp文件夾 發布:2024-07-17 15:51:26 瀏覽:954
魔獸撿物腳本 發布:2024-07-17 15:27:56 瀏覽:129
開發ip伺服器 發布:2024-07-17 15:24:42 瀏覽:387
安卓系統視頻製作哪個好用 發布:2024-07-17 15:10:47 瀏覽:210
androidapk結構 發布:2024-07-17 15:10:43 瀏覽:945
c語言指針的例子 發布:2024-07-17 15:08:01 瀏覽:768
linuxzcat 發布:2024-07-17 15:02:09 瀏覽:901
賓士編程嗎 發布:2024-07-17 14:57:08 瀏覽:853
硬碟加密硬體 發布:2024-07-17 14:51:05 瀏覽:836
网站地图