我有一个类似下面的JSON值,我需要解析数据的对值。
{
"columns" : [ "Book", "Publisher" ],
"data" : [ [ "Book1", "Author1" ], [ "Book2", "Author2" ], [ "Book3", "Author3" ]]
}
我应该如何使用org.json库来提取我需要的值,并放入像Map这样的数据类型?我正在使用Java编程。提前谢谢!
编辑:“数据”的数据集是查询结果,因此我们无法确定代码中的值。 Book和Publisher列已经知道,但我们对数据集的唯一了解是它们是一对值。
答案 0 :(得分:2)
由于您尚未发布您尝试过的内容,因此我无法为您编码。不过这里有一些东西让你开始使用json。
public static void main(String[] args) throws IOException {
String jsondata = "{\"columns\" : [\"Book\", \"Publisher\" ], \"data\" : [ [ \"Book1\", \"Author1\" ], [ \"Book2\", \"Author2\" ], [ \"Book3\", \"Author3\" ]]}";
JSONObject obj = (JSONObject)JSONValue.parse(jsondata);
JSONArray jsonval= (JSONArray)obj.get("data");
HashMap<String, String> map = new HashMap<String, String>();
for (int i=0; i<jsonval.toArray().length; i++) {
JSONArray datapair = (JSONArray)jsonval.get(i);
String book = (String) datapair.get(0);
String author = (String)datapair.get(1);
map.put(book, author);
}
}
浏览文档以了解插入地图的语法
答案 1 :(得分:0)
以下是使用org.json lib编译和解码json的示例:
编码:
JSONArray list1 = new JSONArray();
list1.add("foo");
list1.add(new Integer(100));
list1.add(new Double(1000.21));
JSONArray list2 = new JSONArray();
list2.add(new Boolean(true));
list2.add(null);
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));
obj.put("nickname",null);
obj.put("list1", list1);
obj.put("list2", list2);
System.out.println(obj);
Result: {"balance":1000.21,"list2":[true,null],"num":100,"list1":["foo",100,1000.21],"nickname":null,"is_vip":true,"name":"foo"}
解码:
以下示例使用JSONObject和JSONArray,其中JSONObject是java.util.Map,JSONArray是java.util.List,因此您可以使用Map或List的标准操作来访问它们。
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);
}
}
}
While compile and executing above program, this will produce following result:
The 2nd element of array
{"1":{"2":{"3":{"4":[5,{"6":7}]}}}}
Field "1"
{"2":{"3":{"4":[5,{"6":7}]}}}
{}
[5]
[5,2]