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 ではないため、正規表現の領域にいます。したがって、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 "docs" 内の要素は、有効な JSON オブジェクトではありません。有効にするには、"key":"value" のペアが必要です。

例えば:

{
    "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
            }
        }
    ]
}

JSONLintなど、JSON を検証できるサイトはたくさんあります。

ご質問にお答えする前に、JSON を修正してください。

于 2012-12-05T18:08:01.910 に答える