私は安らかな Web サービスと、Web サービスを消費する Java クライアントを構築しています。クライアントに送信されるサーバーからの応答は、json 形式です。json 文字列の属性とデータを配列に格納したいので、データを使用してクライアント操作を構築できます。私が製品のコレクションを持っているとしましょう。残りのサーバーからの出力は次の形式であり、単純に文字列変数に入れています。
String output="{"product":[{"code":"7","name":"book","value":"4.0"},{"code":"3","name":"pen","value":"4.5"},{"code":"9","name":"pencil","value":"5.5"}]}"
json オブジェクトを Product タイプの Java オブジェクトに変換しようとしました。
Gson gson = new GsonBuilder().serializeNulls().create();
Product product= gson.fromJson(output,Product.class);
System.out.println(product);
出力は次のとおりです。
product:[product:null,name:book,code:7,value:4,000000,
product:null,name:pen,code:3,value:4,500000,
product:null,name:pencil,code:9,value:5,500000],name:null,code:null,value:null
そして私が
System.out.println(product.product);
出力は次のとおりです。
[product:null,name:book,code:7,value:4,000000,
product:null,name:pen,code:3,value:4,500000,
product:null,name:pencil,code:9,value:5,500000]
最初の質問: null 値が表示される理由がわかりません。これを修正する方法が見つかりません。
2 番目の質問: 私は何日も探し回っていますが、これらのデータを配列またはリストに保存する方法が本当に見つかりません。それらを Java Products オブジェクトに保存したくありません。私がやりたいことは、すべての属性をまとめることです。たとえば、すべての値、名前、またはすべての製品の配列です。
Something like this I have in mind:
String[] names=["book","pen","pencil"];
Integer[] codes=[7,3,9];
Double[] values=[4.0,4.5,5.5];
3 番目の質問: これらの操作 (合計値の計算など) をサーバー側で行う必要がありますか? これは良い方法でしょうか?
4 番目の質問: クライアントで Products クラスを複製する必要がありますか? そのため、CRUD 以外の操作は絶対にクライアント側で行う必要があるかどうかはわかりません。
製品クラス:
class Product {
public String name;
public Integer code;
public Double value;
public List<Product> product;
public String getName()
{
return name;
}
public void setName(String name)
{
this.name=name;
}
public Integer getCode()
{
return code;
}
public void setCode(Integer code)
{
this.code=code;
}
public Double getValue()
{
return value;
}
public void setValue(Double value)
{
this.value=value;
}
public List<Product> getProduct()
{
return product;
}
public void setProduct(List<Product> order)
{
this.product = product;
}
@Override
public String toString() {
return String.format("product:%s,name:%s,code:%d,value:%f",product,name,code,value);
}
}
最も簡単な方法と思われるため、Gson ライブラリを使用しています。