1

以下のような非常に複雑な文字列があります。

"data":"[
         {
           "id": "123456",
           "from": 
            {
               "name": "ABC",
               "id": "123"
             },

            "message": "isafh",
            "story": "Best Story",
            "properties": 
            [
             {
               "name": "By",
               "text": "PROUD TO BE AN INDIAN",
               "href": "www.xyz.com"
             }
           ],
           "privacy": 
           {
                      "value": ""
           },
           "type": "photo",
           "created_time": "2013-10-24T07:17:28+0000",
           "updated_time": "2013-10-24T07:17:28+0000"
          },
          {
           "id": "122423456",
            "from": 
             {
                "name": "ABCaasd",
                "id": "124233"
              },

             "message": "isafh",
             "story": "Best nice Story",
             "properties": 
             [
              {
                "name": "By",
                "text": "PROUD TO BE AN INDIAN",
                "href": "www.abc.com"
              }
            ],
            "privacy": 
            {
                       "value": ""
            },
           "type": "photo",
           "created_time": "2013-10-24T07:17:28+0000",
         },
         {
           Similar data as above {... }
         },
       ]"
"next token":"1233"

ここで、すべての JSON データは、これらの大括弧 "[ ]" 内にあり、"{ ... }" 中括弧で区切られています。ここでは、すべての中括弧からのメッセージ、ストーリー、およびプロパティが必要です。2 つのことを試してみました one is two すべてを JSON オブジェクトに入れ直し、正規表現「message:」に一致させる無駄な試みを試みましたが、それでもうまくいきませんでした。

すべての中かっこからメッセージ、ストーリー、プロパティを見つける方法は何ですか?

4

2 に答える 2

1

google-gson https://code.google.com/p/google-gson/のような json ライブラリを使用する

これは gson-1.7.1.jar でテストされた動作例ですが、最新バージョンでも動作するはずです。

public static void main(String[] args) {
    String jsonData = "{\"data\":[{\"id\": \"123456\",\"from\": {\"name\": \"ABC\",\"id\": \"123\"},\"message\": \"isafh\",\"story\": \"Best Story\",\"properties\": [{\"name\": \"By\",\"text\": \"PROUD TO BE AN INDIAN\",\"href\": \"www.xyz.com\"}],\"privacy\": {\"value\": \"\"},\"type\": \"photo\",\"created_time\": \"2013-10-24T07:17:28+0000\",\"updated_time\": \"2013-10-24T07:17:28+0000\"},{\"id\": \"122423456\",\"from\": {\"name\": \"ABCaasd\",\"id\": \"124233\"},\"message\": \"isafh\",\"story\": \"Best nice Story\",\"properties\": [{\"name\": \"By\",\"text\": \"PROUD TO BE AN INDIAN\",\"href\": \"www.abc.com\"}],\"privacy\": {\"value\": \"\"},\"type\": \"photo\",\"created_time\": \"2013-10-24T07:17:28+0000\"}],\"next token\":\"1233\"}";
    List<String> messages = parse(jsonData);
    for (String message : messages) {
        System.out.println(message);
    }
}

public static List<String> parse(String jsonData) {
    List<String> messages = new ArrayList<String>();
    JsonElement jsonElement = new JsonParser().parse(jsonData);
    JsonObject jsonTopObject = jsonElement.getAsJsonObject();
    JsonArray jsonArray = jsonTopObject.getAsJsonArray("data").getAsJsonArray();
    Iterator<JsonElement> iterator = jsonArray.iterator();
    while (iterator.hasNext()) {
        JsonObject jsonObject = iterator.next().getAsJsonObject();
        messages.add(jsonObject.get("message").getAsString());
    }
    return messages;
}

提供された json データは、有効にするために若干の変更が加えられていることに注意してください。たとえば、「{」、「}」でラップしてjsonオブジェクトを形成し、データの最後にもある"created_time": "2013-10-24T07:17:28+0000",},ため、最後のコンマが削除されています。

于 2013-10-24T08:40:13.927 に答える