0

次のJSONを考えると、値ResultSetを運ぶインスタンスをどのように作成できるのでしょうか。Queryppb

package jsontest;

import com.google.gson.Gson;

/**
 *
 * @author yccheok
 */
public class Main {

    public static class ResultSet {
        public String Query;
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        final String s = "{\"ResultSet\":{\"Query\":\"ppb\"}}";
        System.out.println(s);
        Gson gson = new Gson();
        ResultSet resultSet = gson.fromJson(s, ResultSet.class);
        // {}
        System.out.println(gson.toJson(resultSet));
        // null?
        System.out.println(resultSet.Query);
    }
}

現在、これが私が得るものです:

{"ResultSet":{"Query":"ppb"}}
{}
null

文字列を変更せずに、正しいJavaオブジェクトを取得するにはどうすればよいですか?

4

1 に答える 1

2

最初に新しいオブジェクトを作成し、を呼び出して、結果を確認してくださいgson.toJson(object)

私はgsonを持っていませんが、jackson(別のobject-to-jsonマッパー)はこれを出力します:

{"Query":"ppb"}

したがって、クラス名は含めません。実際、gsonユーザーガイドには、これを正確に示す例が示されています。を見てくださいBagOfPrimitives

(そして最後の注意-Javaでは、変数は小文字であるということです-つまりquery、ではなくQuery

更新json入力を実際に変更できない場合は、次のように構造をミラーリングできます。

public static class Holder {
    public ResultSet ResultSet;
}

public static class ResultSet {
    public String Query;
}

(そして使用するHolder h = gson.fromJson(s, Holder.class);

于 2010-10-10T18:47:54.883 に答える