W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
本教程將會(huì)教我們?nèi)绾问褂?Java 編程語言編碼和解碼 JSON。讓我們先來準(zhǔn)備環(huán)境以便針對 JSON 進(jìn)行 Java 編程。
在我們使用 Java 編碼和解碼 JSON 之前,我們需要安裝一個(gè)可用的 JSON 模塊。對于這個(gè)教程請下載和安裝 JSON.simple,然后把 jsonsimple-1.1.1.jar 文件的路徑添加到環(huán)境變量 CLASSPATH 中。
JSON.simple 實(shí)體映射從左側(cè)到右側(cè)為解碼或解析,實(shí)體映射從右側(cè)到左側(cè)為編碼。
JSON | Java |
---|---|
string | java.lang.String |
number | java.lang.Number |
true | false | java.lang.Boolean |
null | null |
array | java.util.List |
object | java.util.Map |
解碼時(shí),java.util.List 的默認(rèn)具體類是 org.json.simple.JSONArray,java.util.Map 的默認(rèn)具體類是 org.simple.JSONObject。
下面這個(gè)簡單的示例展示了使用 java.util.HashMap 的子類 JSONObject 編碼一個(gè) JSON 對象。這里并沒有提供順序。如果你需要嚴(yán)格的元素順序,請使用 JSONValue.toJSONString(map) 方法的有序映射實(shí)現(xiàn),比如 java.util.LinkedHashMap。
import org.json.simple.JSONObject;
class JsonEncodeDemo
{
public static void main(String[] args)
{
JSONObject obj = new JSONObject();
obj.put("name", "foo");
obj.put("num", new Integer(100));
obj.put("balance", new Double(1000.21));
obj.put("is_vip", new Boolean(true));
System.out.print(obj);
}
}
編譯和執(zhí)行上面的程序時(shí),會(huì)生成如下所示結(jié)果:
{"balance": 1000.21, "num":100, "is_vip":true, "name":"foo"}
下面是另一個(gè)示例,使用 Java JSONObject 展示了 JSON 對象流:
import org.json.simple.JSONObject;
class JsonEncodeDemo
{
public static void main(String[] args)
{
JSONObject obj = new JSONObject();
obj.put("name","foo");
obj.put("num",new Integer(100));
obj.put("balance",new Double(1000.21));
obj.put("is_vip",new Boolean(true));
StringWriter out = new StringWriter();
obj.writeJSONString(out);
String jsonText = out.toString();
System.out.print(jsonText);
}
}
編譯和執(zhí)行上面的程序時(shí),會(huì)生成如下所示結(jié)果:
{"balance": 1000.21, "num":100, "is_vip":true, "name":"foo"}
下面的例子使用了 JSONObject 和 JSONArray,其中 JSONObject 就是 java.util.Map,JSONArray 就是 java.util.List,因此我們可以使用 Map 或 List 的標(biāo)準(zhǔn)操作訪問它們。
import org.json.simple.JSONObject;
import org.json.simple.JSONArray;
import org.json.simple.parser.ParseException;
import org.json.simple.parser.JSONParser;
class JsonDecodeDemo
{
public static void main(String[] args)
{
JSONParser parser=new JSONParser();
String s = "[0,{\"1\":{\"2\":{\"3\":{\"4\":[5,{\"6\":7}]}}}}]";
try{
Object obj = parser.parse(s);
JSONArray array = (JSONArray)obj;
System.out.println("The 2nd element of array");
System.out.println(array.get(1));
System.out.println();
JSONObject obj2 = (JSONObject)array.get(1);
System.out.println("Field \"1\"");
System.out.println(obj2.get("1"));
s = "{}";
obj = parser.parse(s);
System.out.println(obj);
s= "[5,]";
obj = parser.parse(s);
System.out.println(obj);
s= "[5,,2]";
obj = parser.parse(s);
System.out.println(obj);
}catch(ParseException pe){
System.out.println("position: " + pe.getPosition());
System.out.println(pe);
}
}
}
編譯和執(zhí)行上面的程序時(shí),會(huì)生成如下所示結(jié)果:
The 2nd element of array
{"1":{"2":{"3":{"4":[5,{"6":7}]}}}}
Field "1"
{"2":{"3":{"4":[5,{"6":7}]}}}
{}
[5]
[5,2]
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: