0

如何解析以下内容以检索以下内容。

{"docs": [
    "SolrDocument[{content_type=[text/plain], description=/mnt/sdcard/A.txt, id=4df6fa43-1a99-4475-bc5b-80dd0ab6d114, name=uploadedfile}]",
    "SolrDocument[{content_type=[text/plain], description=asdf.png, id=9fb20d5d-cf39-4635-9a22-64560124809e, name=uploadedfile}]"]
}

我需要将描述检索到一个字符串数组中,并将 id 检索到另一个字符串数组中。我试过

a="docs"
JSONObject jobj = new JSONObject(line);
JSONArray IDS = (JSONArray) jobj.get(a);

这有效,但它返回一个字符串数组

4

2 回答 2

4

您尝试解析的数据不是有效的 JSON,因此您现在处于 RegEx 领域。因此,从 JSONArray 中读取每一行,您可以像这样提取您所追求的内容:

String data = "SolrDocument[{content_type=[text/plain], description=/mnt/sdcard/A.txt, id=4df6fa43-1a99-4475-bc5b-80dd0ab6d114, name=uploadedfile}]";
Pattern values = Pattern.compile("(description|id)=([\\S]+),", Pattern.CASE_INSENSITIVE);
Matcher matches = values.matcher(data);
while(matches.find()) {
  System.out.println(matches.group(1) + "=" + matches.group(2));
}

这将打印出:

description=/mnt/sdcard/A.txt
id=4df6fa43-1a99-4475-bc5b-80dd0ab6d114
于 2012-12-05T18:04:45.403 回答
0

JSONArray“文档”中的元素不是有效的 JSON 对象。您必须具有“键”:“值”对才能有效。

例如:

{
    "docs": [
        {
            "id": 912345678901,
            "text": "How do I read JSON on Android?",
            "geo": null,
            "user": {
                "name": "android_newb",
                "followers_count": 41
            }
        },
        {
            "id": 912345678902,
            "text": "@android_newb just use android.util.JsonReader!",
            "geo": [
                50.454722,
                -104.606667
            ],
            "user": {
                "name": "jesse",
                "followers_count": 2
            }
        }
    ]
}

有很多网站可以验证您的 JSON,例如JSONLint

在我们回答您的问题之前,请先修复您的 JSON。

于 2012-12-05T18:08:01.910 回答