在Java中解码JSON格式

4

我得到了一个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]]]

我有一个包含三个数组的大数组(有时可能是两个或更多个数组),每个这些三个数组中都包含一些数组,就像上面的例子。

反过来的过程是什么(解码格式)?我的意思是,如果我想要这些数组中的值怎么办。

我尝试了org.json Java API,这样对吗:

JSON JSONArray list = new JSONArray();
list.get()

回答你的最后一个问题 - list.getInt() 是你想要的。 - Nick
4个回答

2

有一个叫做json-lib的工具可以用来解析JSON字符串。在O'Reilly的这篇文章中有介绍。它还展示了一个基于maven的例子,因此可以方便地复制粘贴。


非常感谢您的教程。 - jimmy

2

2

如果你只需要解析JSON数组,那么使用JavaScript可能有点过度。但是,如果你使用Java 6,你可以在Java中使用JavaScript。因为你可以在嵌入的JavaScript函数中访问Java类,所以你可以将JavaScript数组转换成ArrayList或其他你想在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数组,那么这可能会很有用。您可以在Java平台脚本化Java脚本编程指南中找到更多信息。

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 
                }
            }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接