数据传输---json

{键:值}

{"firstName":"Bill" , "lastName":"Gates"} 标准板式

值是一个数组的json:

外层键是employees,值是数组。数组里面又是json

{"employees": [{ "firstName":"Bill" , "lastName":"Gates" },
        { "firstName":"George" , "lastName":"Bush" },
        { "firstName":"Thomas" , "lastName":"Carter" }

        ]

}

json的官网 www.json.org

常用的是google-gson版本的。包名是 gson-2.2.4.jar

解析json

JsonParser jp = new JsonParser(); //创建json解析器

JsonObject object = (JsonObject) jp.parse(new FileReader("test.json"));//读取文件中数据转为jsonObject对象

System.out.println("查出来的是:"+object.get("liu").getAsString());//在jsonObject对象中根据键获取值,第一个get获取到的是jsonElement。第二个get把它转换为string

System.out.println("查出来的是:"+object.get("bools").getAsBoolean());//获取布尔

JsonArray array = object.get("employees").getAsJsonArray();//获取转换为json数组

for(int i=0;i<array.size();i++){//因为employees值是数组,数组中又是json对象。遍历数组

System.out.println("----");

JsonObject subobject = array.get(i).getAsJsonObject();//获得数组中的第一个元素,并将转为jsonObjec对象

System.out.println(subobject.get("firstName").getAsString());//同上根据键获取jsonObjec对应的值

System.out.println(subobject.get("lastName").getAsString());

}

生成json

JsonObject jo = new JsonObject(); //创建JsonObject对象

//jo.add(property, value); //是在jo中添加一个JsonObject才用

jo.addProperty("cat", "it");//在jo对象中添加一个普通的键值对

JsonArray array = new JsonArray(); //创建一个JsonArray数组对象

JsonObject lan1 = new JsonObject(); //创建JsonObject对象lan1

lan1.addProperty("id", 1);

lan1.addProperty("name", "java");

lan1.addProperty("ide", "Eclipse");

array.add(lan1); //把lan1对象添加到array数组中

JsonObject lan2 = new JsonObject(); //创建JsonObject对象lan2

lan2.addProperty("id", 2);

lan2.addProperty("name", "swift");

lan2.addProperty("ide", "xcode");        

array.add(lan2); //把lan2对象添加到array数组中

jo.add("langs", array);//把array数组添加到jo对象中,array是一个json所以用add

jo.addProperty("bool", true);//在jo对象中添加一个普通的键值对

JsonObject lan3 = new JsonObject(); //创建JsonObject对象lan3

lan3.addProperty("id", 3);

lan3.addProperty("name", "c#");

lan3.addProperty("ide", "visual studio");        

jo.add("lan3", lan3); //同上lan3是一个json对象所以用add添加

System.out.println(jo.toString());//将json对象转换为字符串。可以直接拷贝控制台输出的结果到文本中,也可这样直接传输



阿里巴巴的json。Jar

import com.alibaba.fastjson.JSON;

public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray
public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject
public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean
public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray
public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合
public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本
public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本
public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray。

 

来自 <http://blog.csdn.net/glarystar/article/details/6654494>

 

经典的:

String sss = postMaiDian(time1, time2, page, pageDat);   //获得一个json字符串

net.sf.json.JSONArray arry = net.sf.json.JSONArray.fromObject(sss);

System.out.println("json字符串内容如下");

System.out.println(arry);

List<Map<String, String>> rsList = new ArrayList<Map<String, String>>();

for (int i = 0; i < arry.size(); i++) {

JSONObject jsonObject = arry.getJSONObject(i);

Map<String, String> map = new HashMap<String, String>();

for (Iterator<?> iter = jsonObject.keys(); iter.hasNext();) {

String key = (String) iter.next();

String value = jsonObject.get(key).toString();

map.put(key, value);

}

rsList.add(map);

}

System.out.println(rsList.toString());

 

posted @ 2015-08-25 15:05  红色小宇宙  阅读(304)  评论(0编辑  收藏  举报