JSON是AJAX中的X(就是可以取代XML) ——出自JSON创始人
json是一种数据格式。但是JSONObject类常见使用的有两种。
一、net.sf.json.JSONObject
该种需要很多关联jar包,详情参阅如下链接
二、org.json.JSONObject
以下我们的代码例子中使用的方法都是基于这种JSONObject。
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。
形如这样的数据格式↓
//↓ 不包含json对象数组
{
"SendTransCode":"MELEGenerateRand",
"ChannelHeadRequest":{
"ChannelId":"11",
"ChannelDate":"20160511",
"ChannelJnlNo": "6a6a1cbe458444108f85bb8530b6fe32"
}
"RandType":"1",
"EProtocolAcNo":"111111111111111111"
}
//↓ 包含json对象数组
{
"SendTransCode": "MELEGenerateRand",
"ChannelHeadRequest": [
{"ChannelId":"11"},
{"ChannelDate":"20160511"},
{"ChannelJnlNo":"6a6a1cbe458444108f85bb8530b6fe32"}
],
"RandType":"1",
"EProtocolAcNo":"111111111111111111"
}
- 数据在键值对中
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
讨论完结构。我们来看看JSON格式的数据是如何通过java代码组装的吧。
首先需要 org.json的包
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class TestJSON {
public static void main(String[] args) throws JSONException {
JSONObject member1 = new JSONObject();
member1.put("loginname", "zhangfan");
member1.put("password", "userpass");
member1.put("email","10371443@qq.com");
member1.put("sign_date", "2007-06-12");
JSONObject member2 = new JSONObject();
member2.put("loginname", "zf");
member2.put("password", "userpass");
member2.put("email","8223939@qq.com");
member2.put("sign_date", "2008-07-16");
JSONArray jsonMembers = new JSONArray();
jsonMembers.put(member1);
jsonMembers.put(member2);
JSONObject json=new JSONObject();
json.put("users", jsonMembers); //将json数组作为"json"这个json对象"users"这个key对应的value.
System.out.println(json);
}
}
以上比较简单就不在赘述。
那么如何解析json格式的数据呢,从复杂的json格式中去到自己想要的value.
下面的代码我们讨论的是在json格式或者内容已知的情况下的解析
String jsonString = "{\"users\":[{\"loginname\":\"zhangfan\",\"password\":\"userpass\",\"email\":\"10371443@qq.com\"},"
+ "{\"loginname\":\"zf\",\"password\":\"userpass\",\"email\":\"822393@qq.com\"}]}";
JSONObject jsonO = new JSONObject(jsonString);
JSONArray users = jsonO.getJSONArray("users"); //获取json对象中
for(int i=0;i<users.length();i++){
JSONObject user = (JSONObject)users.get(i);
String name = (String)user.get("loginname");
System.out.print(name+ " ");
}
如果JSON格式未知,那么就不能这样来玩了。