在编译时数据模式未知时,从URL解析JSON数组

时间:2016-01-27 13:28:37

标签: java android arrays json parsing

我正在尝试完成部分Android应用程序,使用户能够输入URL,并从中提取JSON数组数据。目前,应用程序采用用户URL,并将字符串存储为如下所示:

{
"name": "Demo",
"currentdistance": "0",
"goals": [
    {
        "goal": {
            "depth": "2",
            "goal": "2"
        },
        "goal": {
            "depth": "6",
            "goal": "4"
        },
        "goal": {
            "depth": "4",
            "goal": "3"
        }
    }
]

}

现在我发现许多解决方案(例如this)效果很好,但他们假设您提前知道关键值是什么。我正在尝试从编译时未知的源创建一个JSON数组,并且可以从一个键到多个键。

我尝试将字符串保存为JSON对象,然后使用.put将其添加到数组中,但如果数据有多个键,则没有太大用处。一旦我从URL获取数据,我必须能够解析和处理就像一个真正的JSON数组。

我现在不关心对URL的错误检查,所以假设给应用程序的URL是一个正确的HTTP JSON文本,如上所示。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

不能。如果您不是真的了解JSON模式,则无法将其解析为POJO(Plain Old Java Object),因为Java是一种强类型语言。您可以使用Javascript

等动态语言将自定义JSON字符串解析为对象

如果您想要浏览json字符串的所有键值。Sample code

jObject = new JSONObject(contents.trim());
Iterator<?> keys = jObject.keys();

while( keys.hasNext() ) {
    String key = (String)keys.next();
    if ( jObject.get(key) instanceof JSONObject ) {

    }
}

希望这有帮助:)