json类型:
{
"desc": "success",
"datalist": [
{
"address": "上海",
"id": 1,
"name": "张三"
},
{
"address": "北京",
"id": 2,
"name": "李四"
}
],
"obj": {
"address": "上海",
"id": 1,
"name": "张三"
},
"code": "200"
}
工具类:
import java.lang.reflect.Field; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.util.Log; import com.weijie.app_user.test.JsonModel; public class JsonConvert{ public static JsonModel json2obj(String jsonStr,Class<?> c) { JsonModel json=new JsonModel(); try { JSONObject jsonObject1 = new JSONObject(jsonStr); jsonObject=jsonObject1; json.setContent(jsonObject1.getString("content")); json.setRetCode(jsonObject1.getString("code")); json.setRetDesc(jsonObject1.getString("desc")); json.setRetValue(getObject(jsonObject, "obj", c)); json.setList(getList("datalist", c)); } catch (Exception e) { e.printStackTrace(); } return json; } private static final String TAG = "jsonUtil"; private static JSONObject jsonObject; private JsonConvert(String json) { Log.i(TAG, "json="+json); jsonObject = getJsonObject(json); if(jsonObject==null) { Log.e(TAG, "jsonobject is null"); } } public JsonConvert() { super(); } public static JsonConvert newJsonUtil(String json) { JsonConvert util = new JsonConvert(json); return util; } /** * get json object * @param json json data * @return JOSNObject */ public JSONObject getJsonObject(String json) { JSONObject jsonObject = null; try { jsonObject = new JSONObject(json); } catch (JSONException e) { Log.e(TAG, "create jsonobject exception"); e.printStackTrace(); } return jsonObject; } /** * get String data * @param json json data * @param key param * @return String data * @throws JSONException */ public String getString(String key) throws JSONException { if(jsonObject!= null) { return jsonObject.getString(key); }else{ return null; } } /** * get String data * @param json json data * @param key param * @return int data * @throws JSONException */ public int getInt(String key) throws JSONException { if(jsonObject!= null) { return jsonObject.getInt(key); }else{ return -1; } } /** * get Double data * @param json json data * @param key param * @return double data * @throws JSONException */ public double getDouble(String key) throws JSONException { if(jsonObject!= null) { return jsonObject.getDouble(key); }else{ return -1; } } /** * This Method use in jsonObject get current class with object * @param jsonObject * @param c class * @return object * @throws Exception */ public Object getObject(Class<?> c) throws Exception { if(jsonObject!=null) { return getObject(c.getSimpleName().toLowerCase(),c); }else{ return null; } } /** * This Method use in jsonObject get current class with object * @param jsonObject * @param key query key * @param c class * @return object * @throws Exception */ public Object getObject(String key,Class<?> c) throws Exception { if(jsonObject!=null) { return getObject(jsonObject, key, c); }else{ return null; } } public Object getObject(JSONObject jsonObject,Class<?> c) throws Exception { return getObject(jsonObject, c.getSimpleName().toLowerCase(), c); } /** * This Method use in jsonObject get current class with object * @param jsonObject * @param key query key * @param c class * @return object * @throws Exception */ public static Object getObject(JSONObject jsonObject, String key,Class<?> c) throws Exception { Log.i(TAG,"key == " + key); Object bean =null ; if(jsonObject!=null) { JSONObject jo = null; if(key!=null) { jo = jsonObject.getJSONObject(key); }else{ jo = jsonObject; } if(jo!=null) { if(c.equals(null)) { Log.e(TAG, "class is null"); bean = jo.get(key); }else{ bean = c.newInstance(); Field[] fs = c.getDeclaredFields(); for (int i = 0; i < fs.length; i++) { Field f = fs[i]; f.setAccessible(true); Type type = f.getGenericType(); String value = jo.getString(f.getName()); Log.i(TAG,f.getName()+"="+value); if(type.equals(int.class)) { f.setInt(bean,Integer.valueOf(value)); }else if(type.equals(double.class)){ f.setDouble(bean, Double.valueOf(value)); }else{ f.set(bean,value); } } } }else{ Log.e(TAG, "in jsonobject not key "); } }else{ Log.e(TAG, "current param jsonobject is null"); } return bean; } /** * This method use in jsonObject get list object * @param key list key * @param objectKey object key * @param c object * @return list * @throws Exception */ public static List<Object> getList(String key ,Class<?> c) throws Exception { List<Object> list = null; if(jsonObject!=null) { JSONArray jsonArray = jsonObject.getJSONArray(key); if(!jsonArray.isNull(0)) { list = new ArrayList<Object>(); for (int i = 0; i < jsonArray.length(); i++) { JSONObject jsObject = jsonArray.getJSONObject(i); Object object = getObject(jsObject, null, c); list.add(object); } } } return list; } /** * Test class field value * @param c * @param classObject * @throws IllegalArgumentException * @throws IllegalAccessException */ public static String getFieldValue(Class<?> c,Object classObject) throws IllegalArgumentException, IllegalAccessException { StringBuffer sb = new StringBuffer(); Field[] fs = c.getFields(); for (int i = 0; i < fs.length; i++) { String s = fs[i].getName()+"="+fs[i].get(classObject); sb.append(s).append("\n"); } // Log.e(TAG, sb.toString()); return sb.toString(); } /*public String obj2Json(T obj) { return ""; }*/ }
JsonModel:
import java.util.List; public class JsonModel { private String code; private String desc; private String content; private Object obj; private List<Object> datalist; public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getDesc() { return desc; } public void setDesc(String desc) { this.desc = desc; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public Object getObj() { return obj; } public void setObj(Object obj) { this.obj = obj; } public List<Object> getDatalist() { return datalist; } public void setDatalist(List<Object> datalist) { this.datalist = datalist; } }
Person.java:
public class Person { private int id; private String name; private String address; public Person() { super(); } public Person(int id, String name, String addrss) { super(); this.id = id; this.name = name; this.address = addrss; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "Person [addrss=" + address + ", id=" + id + ", name=" + name + "]"; } }
在activity中测试:
String datastring="{\"code\":\"0000\",\"desc\":\"\u6210\u529f\",\"content\":\"3\",\"obj\":{\"address\":\"北京\",\"id\":2,\"name\":\"李四\"}, \"datalist\":[{\"address\":\"上海黄浦区\",\"id\":1001,\"name\":\"jack\"},{\"address\":\"上海闵行区\",\"id\":1002,\"name\":\"rose\"}, {\"address\":\"上海黄浦区\",\"id\":1003,\"name\":\"mick\"}]}"; JsonModel json=JsonConvert.json2obj(datastring, Person.class); Log.i("content", json.getContent()); Log.i("code", json.getCode()); Log.i("desc", json.getDesc()); Person person=(Person) json.getObj(); try { Log.i("name", person.getName()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } List<Object> aylist=json.getList(); for(Object per:aylist){ Person person1=(Person) per; try { Log.i("name", person1.getName()); Log.i("address", person1.getAddress()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }
相关推荐
在Android Studio中解析JSON,通常使用的是`org.json`库,它包含两个主要类:`JSONObject`和`JSONArray`。`JSONObject`用于处理键值对,而`JSONArray`则处理有序的元素列表。 解析JSON对象的步骤如下: 1. **导...
本篇将详细讲解如何在Android应用中解析JSON数据,主要涉及以下几个方面: 1. JSON基本结构 JSON由两种基本结构构成:对象(Object)和数组(Array)。对象是以花括号 `{}` 包围的键值对集合,键用双引号括起,如`...
本篇文章将详细介绍如何使用阿里巴巴的Fastjson库进行JSON操作,并封装成一个方便使用的工具类,以适应各种常见的传值需求。 Fastjson是阿里巴巴提供的一款Java语言编写的高性能功能完备的JSON库。它不仅能够快速地...
本教程聚焦于老罗讲解的Android解析JSON数据的源码分析,这对于深入理解JSON处理以及优化应用程序性能至关重要。 首先,我们需要了解JSON的基本结构。JSON是一种基于键值对的格式,数据以键值对的形式存储,如{"key...
在Java中,解析JSON数据时,通常有以下几种操作: 1. **反序列化**:将JSON字符串转换为Java对象。例如,上面的JSON可以转换为一个`Person`对象,其中包含一个`String`类型的"name"字段,一个`int`类型的"age"字段...
或解析JSON数组: ```java JSONArray jsonArray = new JSONArray(jsonData); for (int i = 0; i (); i++) { JSONObject obj = jsonArray.getJSONObject(i); // 解析对象属性 } ``` ### 3. 在线JSON解析 在线JSON...
- **Android操作JSON格式数据**:Android提供了Gson库、org.json库等工具来解析和生成JSON数据。 - **Android数据库操作**:SQLite是Android内置的轻量级数据库,可以用于持久化数据。 - **Android Activity操作**:...
总结,Android解析JSON数据是常见的任务,开发者可以选择不同的库和方法来实现。理解JSON的结构,熟练使用解析库,以及妥善处理网络请求和异步操作,是提升Android开发能力的关键步骤。通过阅读给定的博客文章,可以...
本篇文章将深入探讨如何在Android中实现一个将集合List转化为JSON字符串的工具类,以及在联网调接口时处理参数的方法。 首先,我们需要了解JSON的基本结构。JSON主要包含两种数据结构:对象(Object)和数组(Array...
在这个场景中,我们将探讨如何在Android Studio中解析JSON数组,并将获取的数据展示在ListView上。这个过程对于任何初学者来说都是一个重要的学习点,因为它涉及到网络数据获取、JSON解析以及UI展示。 首先,我们...
1. **Gson库**:Google提供的Gson库是Android中解析JSON的常见工具。它可以将Java对象转换为JSON字符串,也可以将JSON字符串反序列化为Java对象。使用Gson,你可以轻松地处理复杂的JSON结构。 2. **JSONObject与...
在Android中,我们通常使用Google提供的Gson库或者org.json库来解析JSON数据。Gson库能够直接将JSON字符串转化为Java对象,反之亦然,非常方便。而org.json库提供了JSONObject和JSONArray类,可以手动解析和构建JSON...
本篇文章将详细介绍如何在Android Studio环境下使用Google Gson解析Json数据。 首先,我们需要在项目中引入Gson库。打开build.gradle模块文件,并在dependencies块中添加以下依赖: ```groovy dependencies { ...
为了提高代码的可复用性和可维护性,我们可以创建专门的工具类,提供封装和解析的静态方法。 1. **封装方法**:可以创建一个静态方法,接收一个Java对象,返回JSON字符串。 2. **解析方法**:对应地,创建一个方法...
在Android中,我们通常使用`org.json`库或`com.google.gson`库来解析JSON数据。 1. `org.json`库:这是Android SDK自带的一个轻量级库,主要用于解析简单的JSON数据。 - JSONObject:表示一个JSON对象,可以通过`...
5. Android JSON操作:在Android中,可以使用`JSONObject`和`JSONArray`类来解析JSON数据,通过调用get()、opt()等方法获取键对应的值;也可以使用`GsonBuilder`或`ObjectMapper`(Jackson库)将JSON对象映射为...
本篇文章将详细介绍如何在Android应用中使用Gson库解析JSON数据,以便更好地理解这一关键知识点。 首先,我们要了解JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于...
这两个工具类对于Android开发者来说非常实用,因为它们简化了Java对象与JSON格式之间的互换过程。 首先,让我们详细了解Map对象转JSON字符串。Map是一种键值对的数据结构,它允许我们通过一个键(key)来访问对应的...
这里提到的"Android 封装的工具类"涵盖了几种关键的模块,包括网络请求、数据库操作、数据加密以及JSON解析。以下是对这些工具类的详细介绍: 1. **网络请求工具类(HttpUtils.java)** 在Android应用中,我们常常...
以上就是Android解析JSON数据的一些常见方法。选择哪种方法主要取决于项目需求和个人偏好。在实际开发中,通常会结合使用这些库和工具,以实现高效且灵活的数据处理。记住,无论选择哪种方式,确保在处理网络数据时...