浅谈JSON(二)
2013-11-11 00:11 小华.J 阅读(303) 评论(0) 收藏 举报JAVA使用org.json构造并解析JSON
//使用new JSONObject()构造一个JSON对象,参数为空 public String jsonTest() throws JSONException{ JSONObject json=new JSONObject(); JSONArray jsonMembers = new JSONArray(); JSONObject member1 = new JSONObject(); member1.put("loginname", "=jxh"); member1.put("password", "userpass"); member1.put("email","1234567@163.com"); member1.put("sign_date", "0000-00-00"); jsonMembers.put(member1); JSONObject member2 = new JSONObject(); member2.put("loginname", "hxj"); member2.put("password", "userpass"); member2.put("email","123456@126.com"); member2.put("sign_date", "0000-00-00"); jsonMembers.put(member2); json.put("users", jsonMembers); //以字符串形式返回JSON对象的内容 return json.toString(); } //从字符串构造一个JSON对象并解析之 public String jsonTest2() throws JSONException{ String jsonString="{\"users\":[{\"loginname\":\"jxh\",\"password\":\"userpass\",\"email\":\"jxh@163.com\"},{\"loginname\":\"hxj\",\"password\":\"userpass\",\"email\":\"1234567@163.com\"}]}"; JSONObject json= new JSONObject(jsonString); JSONArray jsonArray=json.getJSONArray("users"); String loginNames="loginname list:"; for(int i=0;i<jsonArray.length();i++){ JSONObject user=(JSONObject) jsonArray.get(i); String userName=(String) user.get("loginname"); if(i==jsonArray.length()-1){ loginNames+=userName; }else{ loginNames+=userName+","; } } return loginNames; }从上面的示例可以看出,在JAVA中处理JSON还是相当方便的。
以上事例中的类和方法
1、JSONObject:JSON对象,其代表的格式为
{
"key1":"values1",
"key2":"values2",
"key3":"values3",
.
.
.
"keyn":"valuesn"
}
2、JSONArray:json数组对象,它代表了一个多个JSON对象的数组,它的每一个元素为一个JSON对象,其代表的格式为:
[
{
"key1":"values1",
"key2":"values2",
"key3":"values3",
.
.
.
"keyn":"valuesn"
},
{
"key1":"values1",
"key2":"values2",
"key3":"values3",
.
.
.
"keyn":"valuesn"
},
{
"key1":"values1",
"key2":"values2",
"key3":"values3",
.
.
.
"keyn":"valuesn"
}
]
JSONObject.put(String key,Object value)方法:向JSONObject里加入新的键值对的方法。
例如:
JSONObject json = new JSONObject();
json.put("name","jxh");
json.put("age",20);
json.put("marriged",false);
System.out.println(json);
的输出结果是
{
"name":"jxh",
"age":20,
"marriged":false
}(实际输出没有换行)
JSONArray.put(int index,Object value)方法:向JSONArray指定位置添加JSON对象。
例如:
JSONArray jsonArray = new JSONArray();
JSONObject json = new JSONObject();
JSONObject info = new JSONObject();
info.put("name","jxh");
info.put("age",20);
info.put("marriged",false);
jsonArray.put(0,"jxh");
jsonArray.put(1,20);
jsonArray.put(2,false);
jsonArray.put(3,info);
json.put("array",jsonArray);
json.put(“info”,info);
System.out.println(json);
输出结果为:
{
"info":
{
"age":20,
"marriged":false,"
name":"jxh"
},
"array":[
"jxh",
20,
false,
{
"age":20,
"marriged":false,
"name":"jxh"
}
]
}
JSONObject.get(String key)方法:获取指定key的值
如上例:
json.get("info") -----> JSONObject
{
"age":20,
"marriged":false,"
name":"jxh"
}
json.get("array') -----> JSONArray
"jxh",
20,
false,
{
"age":20,
"marriged":false,
"name":"jxh"
}
info.get("name") ------> "jxh"
info.get("age") -----> 20
info.get("marriged") -------> false
注意:JSONObject.get(String key)方法返回的是Object对象,上述语句赋与变量时需要强制转型。如:
String name = (String) info.get("name");
我们也可以使用JSONObjet.getXXX()的方式来解析JSONObject,支持String、long、double、int、boolean、JSONObject、JSONArray,如
JSONArray array = json.getJSONArray("array");
boolean marriged = info.getBoolean("marriged");
JSONObject info = json.getJSONObject("info");
JSONArray.get(int index)方法:获取JSON数组中指定位置的元素。
如
jsonArray.get(0) ----->"jxh"
jsonArray.get(1) ----->20
jsonArray.get(2) ----->false
jsonArray.get(3) ----->
{
"age":20,
"marriged":false,
"name":"jxh"
}
和上面一样对get方法所获得的元素赋以变量是需要强制转型,也可使用getXXX(int index)来获取指定类型的值,这里就不再举例
JSONObject.remove(String key)方法:移除键为key的JSON元素,如:
info.remove("name");
System.out.println(info);
输出结果为:
{
"age":20,
"marriged":false
}
JSONArray.remove(int index)方法:移除JSONArray中指定位置的元素,如:
jsonArray.remove(3);
System.out.println(jsonArray);
输出结果为:
["jxh",20,false]
其他方法详见org.json的API:http://www.json.org/java/index.html
浙公网安备 33010602011771号