1

文字列は次のようになります。

[{"Id":287,"Name":"aaaaaaaa","ProjectType":"GP"}, ... snip ...]

このSTRINGは、JSONとして提供されていても文字列であるため、まだJSONではありません。

これをJavaアプリで使用できる構造に変換しようとしています。

誰かがここで私を助けてくれますか?私がこれまでに見つけた例は私にはうまくいきませんでした。基本的に、私はリスト内にある辞書を反復処理できることを望んでいました。

文字列をjsonに変換する最近の試みは、次のとおりです。

JSONObject data = new JSONObject(json_string);

ただし、これはに戻りnullます。

ありがとうございました。

4

3 に答える 3

1

GsonLibの使用を検討してください。この種の処理は非常に優れています。ジェネリックスを使用して実装すると、モバイルAPIからデータを非常にうまくインポートできる一連のシリアライザーを作成できます。実装例の詳細が必要な場合はお知らせください

出典: http ://code.google.com/p/google-gson/

ドキュメント: https ://sites.google.com/site/gson/gson-user-guide

于 2012-12-07T22:31:54.060 に答える
0

Gsonの答えに沿って進むために、私はjacksonを提案します。私の経験では、それはより速く、同じように使いやすいです。

ObjectMapper mapper = new ObjectMapper(); // can reuse, share globally
Map<String, Object> myMap = mapper.readValue(myJSONString, Map.class);

あなたの場合、JSONがリストである場合(それが「ルート」要素として合法かどうかはわかりません)、実行する必要がありますList<Map<String, Object>> myList = mapper.readValue(myJSONString, List.class);

于 2012-12-07T22:47:44.877 に答える
0
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

JsonElement json = new JsonParser().parse("[{\"Id\":287,\"Name\":\"aaaaaaaa\",\"ProjectType\":\"GP\"}]");
        if(json.isJsonArray()) {        
            for(JsonElement elem : json.getAsJsonArray()) {
                //elem.getAsJsonObject().get("Id")
            }
        } else if (json.isJsonObject()) {
            //json.getAsJsonObject()
        } //other else cases for JsonNull, ...
    }
于 2012-12-07T23:52:08.750 に答える