json解析

原创 2012年03月30日 20:22:36

 private String json =
   "[   " +
    "{     " +
     "\"id\": 912345678901," +
     "\"text\": \"How do I read JSON on Android?\"," +
     "\"geo\": null," +
     "\"user\": " +
     "{" +
      " \"name\": \"android_newb\"," +
      "\"followers_count\": 41" +
     "}" +
    "},"  +
    "{" +
     "\"id\": 912345678902," +
     "\"text\": \"@android_newb just use android.util.JsonReader!\"," +
     "\"geo\": [50.454722, -104.606667]," +
     "\"user\": " +
     "{" +
      "\"name\": \"jesse\"," +
      "\"followers_count\": 2" +
     "}" +
    "}" +
   "]";

第一种解析:

package com.zhg.json1;

import java.util.ArrayList;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class JsonParser {
 public ArrayList<Demo> parse2List(String json) {
  ArrayList<Demo> demos = new ArrayList<Demo>();
  try {
   JSONArray array = new JSONArray(json);
   for (int i = 0; i < array.length(); i++) {
    Demo demo = new Demo();
    JSONObject obj = array.getJSONObject(i);
    demo.setId(obj.getLong("id"));
    demo.setText(obj.getString("text"));
    if (!obj.isNull("geo")) {
     double[] geo = new double[2];
     JSONArray geoArray = obj.getJSONArray("geo");
     geo[0] = geoArray.getDouble(0);
     geo[1] = geoArray.getDouble(1);
     demo.setGeo(geo);
    }
    JSONObject userObj = obj.getJSONObject("user");
    User user = new User();
    user.setName(userObj.getString("name"));
    user.setFollower_count(userObj.getInt("followers_count"));
    demo.setUser(user);

    demos.add(demo);
   }
  } catch (JSONException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return demos;
 }

 public String parse2Json(ArrayList<Demo> demos) {
  String json = null;
  try {
   JSONArray array = new JSONArray();
   for (Demo demo : demos) {
    JSONObject obj = new JSONObject();
    obj.put("id", demo.getId());
    obj.put("text", demo.getText());
    if (demo.getGeo() == null) {
     obj.put("geo", JSONObject.NULL);
    } else {
     JSONArray geoArray = new JSONArray();
     geoArray.put(demo.getGeo()[0]);
     geoArray.put(demo.getGeo()[1]);
     obj.put("geo", geoArray);
    }
    JSONObject userObj = new JSONObject();
    userObj.put("name", demo.getUser().getName());
    userObj.put("followers_count", demo.getUser().getFollower_count());
    obj.put("user", userObj);
    array.put(obj);
   }
   json = array.toString();
  } catch (JSONException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return json;
 }
}

 

第二种解析:

package com.zhg.json2;

import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.ArrayList;

import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;
import com.google.gson.stream.JsonWriter;

public class JsonParser {
 public ArrayList<Demo> parse2List(String json){
  ArrayList<Demo> demos = new ArrayList<Demo>();
  try {
   StringReader sr = new StringReader(json);
   JsonReader reader = new JsonReader(sr);
   reader.beginArray();
   while(reader.hasNext()){
    Demo demo = new Demo();
    reader.beginObject();
    while(reader.hasNext()){
     String name = reader.nextName();
     if(name.equals("id")){
      demo.setId(reader.nextLong());
     }else if(name.equals("text")){
      demo.setText(reader.nextString());
     }else if(name.equals("geo")){
      double[] geo = null;
      if(reader.peek()==JsonToken.NULL){
       reader.nextNull();
      }else{
       geo = new double[2];
       int i = 0;
       reader.beginArray();
       while(reader.hasNext()){
        geo[i++] = reader.nextDouble();
       }
       reader.endArray();
      }
      demo.setGeo(geo);
     }else if(name.equals("user")){
      User user = new User();
      reader.beginObject();
      while(reader.hasNext()){
       String uName = reader.nextName();
       if(uName.equals("name")){
        user.setName(reader.nextString());
       }else if(uName.equals("followers_count")){
        user.setFollower_count(reader.nextInt());
       }
      }
      reader.endObject();
      demo.setUser(user);
     }
    }
    reader.endObject();
    demos.add(demo);
   }
   reader.endArray();
   sr.close();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return demos;
 }
 
 public String parse2Json(ArrayList<Demo> demos){
  String json = null;
  try {
   StringWriter sw = new StringWriter();
   JsonWriter writer = new JsonWriter(sw);
   writer.beginArray();
   for(Demo demo : demos){
    writer.beginObject();
    writer.name("id").value(demo.getId());
    writer.name("text").value(demo.getText());
    if(demo.getGeo()==null){
     writer.name("geo").nullValue();
    }else{
     writer.name("geo");
     writer.beginArray();
     writer.value(demo.getGeo()[0]);
     writer.value(demo.getGeo()[1]);
     writer.endArray();
    }
    writer.name("user");
    writer.beginObject();
    writer.name("name").value(demo.getUser().getName());
    writer.name("followers_count").value(demo.getUser().getFollower_count());
    writer.endObject();
    writer.endObject();
   }
   writer.endArray();
   writer.close();
   json = sw.toString();
   sw.close();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return json;
 }
}

 

第三种解析:

package com.zhg.utils;

import java.io.IOException;
import java.io.Reader;
import java.util.ArrayList;

import com.google.gson.stream.JsonReader;
import com.zhg.entity.Student;

public class JsonParser {
 public ArrayList<Student> parseToList(Reader in){
  ArrayList<Student> stus = new ArrayList<Student>();
  try {
   JsonReader reader = new JsonReader(in);
   reader.beginArray();
   while(reader.hasNext()){
    Student stu = new Student();
    reader.beginObject();
    while(reader.hasNext()){
     String name = reader.nextName();
     if(name.equals("id")){
      stu.setId(reader.nextInt());
     }else if (name.equals("name")){
      stu.setName(reader.nextString());
     }else if(name.equals("sex")){
      stu.setSex(reader.nextString());
     }else if(name.equals("age")){
      stu.setAge(reader.nextInt());
     }
    }
    reader.endObject();
    stus.add(stu);
   }
   reader.endArray();
   reader.close();
   in.close();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return stus;
 }
}

 

 

JSON封装解析JAR和API

  • 2017年11月20日 21:50
  • 1.29MB
  • 下载

Hive 使用解析Json 文件格式

hive 0.7版本以后新增了两个函数,比原来的函数更能提高运行效率。 json_tuple   使用方法与介绍  json_tuple(jsonStr, p1, p2, ..., pn) ...

json解析jar包

  • 2017年12月06日 13:29
  • 1.26MB
  • 下载

GSON解析JSON保存到数据库

今天给大家带来的文章为通过Gson解析json数据并快速保存至数据库的文章。我们要保存是json对象数组,本文中的json数组并非从后台获取,为了演示,直接手动构造。 需要保存到数据库的是手机的...

json解析工具

  • 2017年11月28日 10:48
  • 22.19MB
  • 下载

json复杂数据解析demo

  • 2017年11月22日 18:04
  • 15.28MB
  • 下载

jsp获取后台返回的对象中包含的list以及el获取后台json对象并且解析

jsp页面获取后台返回的对象,对象其中一个属性是list。 public class OwnerShopDto { @JsonProperty(value = "shopId") p...

苹果safari浏览器JSON解析插件

  • 2017年12月05日 16:56
  • 9KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:json解析
举报原因:
原因补充:

(最多只允许输入30个字)