0

Gson を使用して、この文字列で定義された 2 つの異なるオブジェクトを抽出する方法を教えてください: http://json.parser.online.fr/

私は使用しようとします

gson.fromJson(json, SeedAttribs.class);

gson.fromJson(json, SettingsAttribs.class);

しかし、どちらも機能していません。なぜいけないのか不思議です。特定のオブジェクトなどのときに、このjson文字列を置き換える方法も必要です。SeedAttribs変化します。SettingsAttribsまったく変わらないうちに書き直す方法が必要です。

これはどのように行うことができますか?

回答ありがとうございます。

4

1 に答える 1

0

元の JSON 文字列に正しい形式が含まれていることを確認してください。最善の方法は、オブジェクトを GSON でシリアル化することです。コードは次のとおりです。

public static void main(String[] args)
{
  Gson gson = new Gson();
  SettingsAttribs st = new SettingsAttribs();
  st.setField1("value1");
  st.setField2("value2");
  // report constructed object
  System.out.println("st: " + st);

  // serialize to json
  String json = gson.toJson(st, SettingsAttribs.class);
  System.out.println("json: " + json);

  // deserialize form json
  SettingsAttribs restoredSettings = gson.fromJson(json, SettingsAttribs.class);
  System.out.println("restoredSettings: " + restoredSettings);
}

コンパイルして実行します。それが生成する出力:

st: SettingsAttribs [field1=value1, field2=value2]
json: {"field1":"value1","field2":"value2"}
restoredSettings: SettingsAttribs [field1=value1, field2=value2]

および SettingsAttribs クラス:

  public class SettingsAttribs
  {
    private String field1;
    private String field2;

    public String getField1()
    {
      return field1;
    }

    public void setField1(String field1)
    {
      this.field1 = field1;
    }

    public String getField2()
    {
      return field2;
    }

    public void setField2(String field2)
    {
      this.field2 = field2;
    }

    @Override
    public String toString()
    {
      return "SettingsAttribs [field1=" + field1 + ", field2=" + field2 + "]";
    }
  }
于 2013-04-19T15:16:12.737 に答える