android怎么直接把json转换为list

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android怎么直接把json转换为list相关的知识,希望对你有一定的参考价值。

参考技术A json就是些键值对,里面的数据类型可能不统一,自己手动解析就可以的,主要用jsonArray和jsonObject,可以去尝试一下http://blog.csdn.net/onlyonecoder/article/details/8490924 参考技术B android中json转换成List<Map>

Java代码
package cn.anycall;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class Test
/**
* 将json 数组转换为Map 对象
* @param jsonString
* @return
*/
public static Map<String, Object> getMap(String jsonString)

JSONObject jsonObject;
try

jsonObject = new JSONObject(jsonString); @SuppressWarnings("unchecked")
Iterator<String> keyIter = jsonObject.keys();
String key;
Object value;
Map<String, Object> valueMap = new HashMap<String, Object>();
while (keyIter.hasNext())

key = (String) keyIter.next();
value = jsonObject.get(key);
valueMap.put(key, value);

return valueMap;

catch (JSONException e)

e.printStackTrace();

return null;


/**
* 把json 转换为ArrayList 形式
* @return
*/
public static List<Map<String, Object>> getList(String jsonString)

List<Map<String, Object>> list = null;
try

JSONArray jsonArray = new JSONArray(jsonString);
JSONObject jsonObject;
list = new ArrayList<Map<String, Object>>();
for (int i = 0; i < jsonArray.length(); i++)

jsonObject = jsonArray.getJSONObject(i);
list.add(getMap(jsonObject.toString()));


catch (Exception e)

e.printStackTrace();

return list;


/**
* @param args
*/
public static void main(String[] args)
// TODO Auto-generated method stub

String temp = "[\"aa\":\"1\",\"bb\":\"2\",\"aa\":\"3\",\"bb\":\"4\",\"aa\":\"5\",\"bb\":\"6\"]";
List<Map<String, Object>> lm = Test.getList(temp);
for(int i=0;i<lm.size();i++)
System.out.println(lm.get(i).get("aa"));
System.out.println(lm.get(i).get("bb"));



本回答被提问者采纳

.net 数据表转换成json

比如我通过查询在ASHX里面获得了一个表叫DT,怎么把这个DT转换成JSON类型的数据传给前台页面?然后前台js怎么使用这个传过去的json数据呢?就获得这个数据的第一条记录就好。。

Dt转换成Json一般可以通过以下的步骤来方便的转换
首先对应表做一个实体类,该类标记可序列化
首先查询数据库获取表数据(比如获取了一条)
编译该条记录实例化表实体类并根据字段名赋值
直接按照json格式序列化该实体类就获取了Json格式的数据(如果需要多条数据只需要一个List,然后序列化那个List就可以了)
下面这个我以前做的东西,核心就是将DT转换成实体类集合
/// <summary>
/// DataTable转换为List<Model>的通用类
/// </summary>
/// <typeparam name="T"><Model类型/typeparam>
public static IList<T> ConvertToModel(DataTable dt)

// 定义集合
IList<T> ts = new List<T>();
// 获得此模型的类型
Type type = typeof(T);
string tempName = "";
foreach (DataRow dr in dt.Rows)

T t = new T();
// 获得此模型的公共属性
PropertyInfo[] propertys = t.GetType().GetProperties();
foreach (PropertyInfo pi in propertys)

tempName = pi.Name;
//string objType = pi.PropertyType.Name;
// 检查DataTable是否包含此列
if (dt.Columns.Contains(tempName))

// 判断此属性是否有Setter
if (!pi.CanWrite) continue;
object value = dr[tempName];
if (value != DBNull.Value)

if (value is DateTime) value = value.ToString();
pi.SetValue(t, value, null);

else

if (value is DateTime) value = value.ToString();
if (value is String)
pi.SetValue(t, value.ToString(), null);



ts.Add(t);

return ts;


/// <summary>
/// 序列化对象
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public static string JSSerialize(object data)

System.Web.Script.Serialization.JavaScriptSerializer ser = new System.Web.Script.Serialization.JavaScriptSerializer();
return ser.Serialize(data);


前台使用Json只需要反序列化话成对象,然后就像获取对象属性一样使用了,
你到百度上搜索序列化反序列化看看应该就明白了。
希望能帮到你……
参考技术A 可以写自定义方法,通过遍历DT来构造JSON的字符串,最好的直接使用json.net类,去网上搜就有了,很方便的。 参考技术B

以上是关于android怎么直接把json转换为list的主要内容,如果未能解决你的问题,请参考以下文章

java 怎么把对象集合转换成json

如何在android中把JSON对象转换为string

android编程怎么把GPS坐标转换为百度地图坐标

json格式怎么转换为excel格式

Android中Json的转换

请问JSON格式为啥要转换成JavaBean对象去刷新界面,而不能直接用JSON去刷新界面