103

次のJSON文字列をJavaオブジェクトに変換したいと思います。

String jsonString = "{
  "libraryname": "My Library",
  "mymusic": [
    {
      "Artist Name": "Aaron",
      "Song Name": "Beautiful"
    },
    {
      "Artist Name": "Britney",
      "Song Name": "Oops I did It Again"
    },
    {
      "Artist Name": "Britney",
      "Song Name": "Stronger"
    }
  ]
}"

私の目標は、次のようなものに簡単にアクセスすることです。

(e.g. MyJsonObject myobj = new MyJsonObject(jsonString)
myobj.mymusic[0].id would give me the ID, myobj.libraryname gives me "My Library").

ジャクソンのことを聞いたことがありますが、「mymusic」リストが含まれているため、キーと値のペアだけでなく、使用しているjson文字列に合わせる方法がわかりません。ジャクソンでこれを達成するにはどうすればよいですか、またはジャクソンがこれに最適でない場合にこれを達成するためのより簡単な方法はありますか?

4

5 に答える 5

196

このためにGSONを使用する必要はありません。ジャクソンはプレーンマップ/リストのいずれかを実行できます。

ObjectMapper mapper = new ObjectMapper();
Map<String,Object> map = mapper.readValue(json, Map.class);

またはより便利なJSONツリー:

JsonNode rootNode = mapper.readTree(json);

ちなみに、実際にJavaクラスを作成してそれ(IMO)をより便利に行うことができなかった理由はありません。

public class Library {
  @JsonProperty("libraryname")
  public String name;

  @JsonProperty("mymusic")
  public List<Song> songs;
}
public class Song {
  @JsonProperty("Artist Name") public String artistName;
  @JsonProperty("Song Name") public String songName;
}

Library lib = mapper.readValue(jsonString, Library.class);
于 2012-04-25T21:22:57.147 に答える
37

GoogleのGsonをチェックしてください:http ://code.google.com/p/google-gson/

彼らのウェブサイトから:

Gson gson = new Gson(); // Or use new GsonBuilder().create();
MyType target2 = gson.fromJson(json, MyType.class); // deserializes json into target2

json文字列のすべてのフィールドを使用してMyTypeクラス(もちろん名前を変更)を作成する必要があります。配列を実行しているときは少し複雑になる可能性があります。すべての解析を手動で実行したい場合(これも非常に簡単です) 、 http: //www.json.org/をチェックして、JsonのJavaソースをダウンロードしてください。パーサーオブジェクト。

于 2012-04-25T02:19:12.020 に答える
9
Gson gson = new Gson();
JsonParser parser = new JsonParser();
JsonObject object = (JsonObject) parser.parse(response);// response will be the json String
YourPojo emp = gson.fromJson(object, YourPojo.class); 
于 2018-07-25T13:25:19.917 に答える
3

Gsonもそれに適しています:http ://code.google.com/p/google-gson/

「Gsonは、JavaオブジェクトをJSON表現に変換するために使用できるJavaライブラリです。JSON文字列を同等のJavaオブジェクトに変換するためにも使用できます。Gsonは、既存のオブジェクトを含む任意のJavaオブジェクトを操作できます。ソースコードがありません。」

APIの例を確認してください:https ://sites.google.com/site/gson/gson-user-guide#TOC-概要 その他の例:http ://www.mkyong.com/java/how-do-convert-java -object-to-from-json-format-gson-api /

于 2012-04-25T02:18:39.743 に答える
0

Underscore-java私は開発者です)はjsonをObjectに変換できます。

import com.github.underscore.U;

    String jsonString = "{\n" +
            "        \"libraryname\":\"My Library\",\n" +
            "                \"mymusic\":[{\"Artist Name\":\"Aaron\",\"Song Name\":\"Beautiful\"},\n" +
            "        {\"Artist Name\":\"Britney\",\"Song Name\":\"Oops I did It Again\"},\n" +
            "        {\"Artist Name\":\"Britney\",\"Song Name\":\"Stronger\"}]}";
    Map<String, Object> jsonObject = U.fromJsonMap(jsonString);
    System.out.println(jsonObject);

    // {libraryname=My Library, mymusic=[{Artist Name=Aaron, Song Name=Beautiful}, {Artist Name=Britney, Song Name=Oops I did It Again}, {Artist Name=Britney, Song Name=Stronger}]}

    System.out.println(U.<String>get(jsonObject, "mymusic[0].Artist Name"));
    // Aaron
于 2022-02-07T10:57:08.507 に答える