{键:值}
{"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());