我有一个JSON(编码)格式的嵌套数组,看起来像这样;
[
[[1234,245,10],[312,234,122],[1234,67788,345],[235,001,332]],
[[1234,245,10],[312,234,122],[1234,67788,345],[235,001,332],[1234,67788,3450]],
[[1234,245,10],[312,234,122],[1234,67788,345],[235,001,332],[1234,67788,34534]]]
所以我有一个包含三个数组的大数组(有时可能是2个或三个以上的数组),这三个数组中的每一个都包含一些数组,在上面的例子中。
什么是反向程序(解码格式)?我的意思是如果我想要来自这些数组的那些值。
我试过org.json Java API,这是对的:
JSON JSONArray list = new JSONArray();
list.get()
答案 0 :(得分:2)
有json-lib来解析JSON字符串。见this article on O'Reilly。它还显示了一个基于maven的示例,因此是Ctrl-C / Ctrl-V的良好来源(如果您愿意,还可以是Cmd)。
答案 1 :(得分:2)
如果您只需要解析JSON数组,那可能有点过分,但如果使用Java 6,则可以在Java中使用JavaScript。然后,您可以将JavaScript数组转换为ArrayList或任何您想要的在Java方面使用,因为您可以在嵌入式JavaScript函数中访问Java类。
将JavaScript嵌入Java看起来与此类似:
// create a script engine manager
ScriptEngineManager factory = new ScriptEngineManager();
// create JavaScript engine
ScriptEngine engine = factory.getEngineByName("JavaScript");
// evaluate JavaScript code
engine.eval("function someFunction(param) {...}");
// you can also use an external script
//engine.eval(new java.io.FileReader("/path/to/script.js"));
// javax.script.Invocable is an optional interface.
// Check whether your script engine implements or not!
// Note that the JavaScript engine implements Invocable interface.
Invocable inv = (Invocable) engine;
// invoke your global function
Object result = inv.invokeFunction("someFunction", param);
如果您想要做的不仅仅是将JSON数组转换为Java数组,这可能很有用。您可以在Scripting for the Java Platform和Java Scripting Programmer's Guide下找到更多信息。
答案 2 :(得分:2)
在json.org上有一些用于解码和编码JSON的免费类:http://www.json.org/java/index.html
答案 3 :(得分:1)
someArray[] array = [
[[1234,245,10],[312,234,122],[1234,67788,345],[235,001,332]],
[[1234,245,10],[312,234,122],[1234,67788,345],[235,001,332],[1234,67788,3450]],
[[1234,245,10],[312,234,122],[1234,67788,345],[235,001,332],[1234,67788,34534]]]
JSONArray superMasterArray = new JSONArray(array);
if(superMasterArray != null){
for(int i = 0; i < superMasterArray.length(); i++ ){
JSONArray masterArray = (JSONArray) superMasterArray.get(i);
for(int j = 0; j< masterArray.length(); j++){
JSONArray innerArray = (JSONArray) masterArray.get(j);
innerArray.getint(0);// gives 1st element of the inner array that is 1234
innerArray.getint(1);// gives 245
innerArray.getint(2);// gives 10
// if you dont know how many element in the given array, then loop it with size of array
}
}
}