json创建和解析

来源:互联网 发布:centos 安装nginx 编辑:程序博客网 时间:2024/05/06 00:14

生成的就是这样的String

{"command":"send","users":{"id":0,"trackinfo":[{"timestamp":"2014-11-07 16:57:31.801","id":0,"longitude":1.1,"latitude":2.2,"altitude":3.3,"telinfo":"2222"},{"timestamp":"2014-11-07 16:57:31.801","id":0,"longitude":2.1,"latitude":3.2,"altitude":4.3,"telinfo":"66666"}],"telno":"2222"},"ip":"172.13.231.201"}

生成的过程,括号冒号逗号这些都是自动生成的,而不是自己输入,看见有人是手动的自己一点点的加上,也可以吧,但是感觉那样会好麻烦。

直接上代码

static public String createJson(UserInfo userinfo) throws JSONException {        JSONObject result=new JSONObject();                                JSONObject user = new JSONObject();        user.put("id", userinfo.getId());        user.put("telno", userinfo.getTelno());                JSONArray trackarray=new JSONArray();        for (TrackInfo track:userinfo.getTrackList())        {            JSONObject trackinfo=new JSONObject();            trackinfo.put("id", track.getId());            trackinfo.put("latitude",track.getLatitude());            trackinfo.put("longitude",track.getLongitude());            trackinfo.put("altitude", track.getAltitude());            trackinfo.put("timestamp", track.getTime());            trackinfo.put("telinfo", track.getTelinfo());            trackarray.put(trackinfo);                    }                user.put("trackinfo", trackarray);                            result.put("users", user);        return result.toString();            }



刚接触这个的可能乍一看会觉得很乱。其实,我的代码确实都挺乱的。。。注意JSONObject和JSONArray的使用。我这里有一个tracklist里是很多个trackinfo对象,track对象里有id,latitude等属性。


解析的话,其实对照创建的写就行了。

static public UserInfo DealJson(String jsonStr) throws JSONException {        UserInfo user=new UserInfo();                          JSONObject json= new JSONObject(jsonStr);            JSONObject userjson= (JSONObject)json.get("users");          user.setId((int)userjson.get("id"));          user.setTelno((String)userjson.get("telno"));          JSONArray trackarray=(JSONArray)userjson.getJSONArray("trackinfo");          List<TrackInfo> tracklist = new ArrayList<TrackInfo>();          for (int i=0;i<trackarray.length();i++)          {               TrackInfo trackinfo=new TrackInfo();               JSONObject trackjson=(JSONObject)trackarray.get(i);               trackinfo.setId((int)trackjson.get("id"));               trackinfo.setLatitude((double)trackjson.get("latitude"));               trackinfo.setLongitude((double)trackjson.get("longitude"));               trackinfo.setAltitude((double)trackjson.get("altitude"));                                             DateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");               Timestamp ts = null;               try {                  ts = new Timestamp(format.parse((String)trackjson.get("timestamp")).getTime());               }  catch (ParseException e) {                  // TODO Auto-generated catch block                  e.printStackTrace();               }                              trackinfo.setTime(ts);               trackinfo.setTelinfo((String)trackjson.get("telinfo"));               tracklist.add(trackinfo);                         }          user.setTrackList(tracklist);        return user;    }
测试程序,

命名比较乱,写的时候比较急。以后一定多注意。

import java.sql.Timestamp;import java.util.ArrayList;import java.util.List;import org.json.JSONException;import org.json.JSONObject;import android.app.Activity;import android.os.Bundle;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);UserInfo userinfo = new UserInfo();userinfo.setId(0);userinfo.setTelno("2222");    Timestamp time = new Timestamp(System.currentTimeMillis());   TrackInfo trackinfo1=new TrackInfo(1.1, 2.2,3.3, time,"2222");TrackInfo trackinfo2=new TrackInfo(2.1, 3.2,4.3, time,"66666");List<TrackInfo> tracklist = new ArrayList<TrackInfo>();tracklist.add(trackinfo1);tracklist.add(trackinfo2);userinfo.setTrackList(tracklist);String str="";try {str = Json.createJson("send","172.13.231.201",userinfo);} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println(str);UserInfo userinfo2=new UserInfo();try {userinfo2=(UserInfo) Json.DealJson(str);} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();}String str2="";try {str2 = Json.createJson("send","172.13.231.201",userinfo2);} catch (JSONException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println(str2);}    }



0 0
原创粉丝点击