web-dev-qa-db-ja.com

JSON配列をJavaオブジェクトに

次のようなjsonファイルを解析する必要があります。

[
  {
    "y": 148, 
    "x": 155
  }, 
  {
    "y": 135, 
    "x": 148
  }, 
  {
    "y": 148, 
    "x": 154
  }
]

これらのX座標とY座標をJavaObject Clickに入れたいのですが、そのクラスは次のようになります。

public class Click {
    int x;
    int y;


    public Click(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public int getY() {
        return y;
    }

    public void setY(int y) {
        this.y = y;
    }
}

彼らはそれが非常に簡単であると彼らが言うので私はgsonを見てきましたが、私は自分のファイルからそれをどうやって行うことができるのかわかりません。

14

json文字列データがjsonStrという変数に格納されていると仮定します。

String jsonStr = getJsonFromSomewhere();
Gson gson = new Gson();
Click clicks[] = gson.fromJson(jsonStr, Click[].class);
24
Yazan

Gson APIといくつかの例を確認してください。下にリンクを貼っておくよ!

String jsonString = //your json String
Gson gson = new Gson();
Type typeOfList = new TypeToken<List<Map<String, Integer>>>() {}.getType();
List<Map<String, Integer>> list = gson.fromJson(jsonString, typeOfMap);

List<Click> clicks = new ArrayList<Click>();
for(int i = 0; i < list.size(); i++) {
    int x = list.get(i).get("x");
    int y = list.get(i).get("y");
    clicks.add(new Click(x, y));
}

http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/Gson.html )( http:// google -gson.googlecode.com/svn/tags/1.5/src/test/Java/com/google/gson/functional/MapTest.Java

2
haley

別の確かなオプションは Jackson かなり堅実なチュートリアルのようです。私はそれに慣れていないので、これが役に立てば幸いです。

主なアイデアは、オブジェクトマッパーを使用することです。

ObjectMapper mapper = new ObjectMapper();
User user = mapper.readValue(new File("c:\\user.json"), User.class);

ステップ4が最善の策である必要があります。おそらく、User.class以外のものが必要なことを理解してください。

編集:

Gsonを使用することにかなり慣れている場合は、おそらく他の同様の答えを見ることが役立つでしょう。 この質問 は、JSONをPOJO(Plain Old Javaオブジェクト)に変換することに関するものであり、浮遊しているようなものです。ここでも、私はあまり詳しくありません。これらと私はいくつかの質問に答えようとすることができますが、これがあなたがどこに行く必要があるかをあなたが理解することを願っています。

幸せなコーディング!質問がある場合はコメントを残してください。

0
Matt