Google Gsonライブラリを使用して、単純なJavaオブジェクトのリストをJSONにシリアル化する必要があります。
オブジェクト:
public class SimpleNode {
private String imageIndex;
private String text;
public String getImageIndex() {
return imageIndex;
}
public void setImageIndex(String imageIndex) {
this.imageIndex = imageIndex;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
シリアル化のために次のコードを作成しました。
List<SimpleNode> testNodes = repository.getElements(0);
Gson gson = new Gson();
String jsonNodesAsString = gson.toJson(testNodes);
動作しますが、JSONオブジェクトのフィールド名はlowerCamelCaseです。このような:
[
{
"imageIndex": "1",
"text": "Text 1"
},
{
"imageIndex": "2",
"text": "Text 2"
}
]
次のように、UpperCamelCaseフィールド名でJSONを取得するにはどうすればよいですか:
[
{
"ImageIndex": "1",
"Text": "Text 1"
},
{
"ImageIndex": "2",
"Text": "Text 2"
}
]
メンバー変数の名前をUpperCamelCaseに変更できると思いますが、別の方法がありますか?
ドキュメントから取られた:
Gsonは、標準のJavaフィールド名(小文字で始まるキャメルケース名--- "sampleFieldNameInJava")をJsonフィールド名(sample_field_name_in_JavaまたはSampleFieldNameInJava)。定義済みの命名ポリシーについては、FieldNamingPolicyクラスを参照してください。
また、クライアントがフィールドごとにカスタム名を定義できるようにする注釈ベースの戦略もあります。注釈ベースの戦略には、無効なフィールド名が注釈値として提供された場合に「ランタイム」例外を発生させるフィールド名検証があります。
以下は、Gson命名ポリシー機能の両方を使用する方法の例です。
private class SomeObject {
@SerializedName("custom_naming")
private final String someField;
private final String someOtherField;
public SomeObject(String a, String b) {
this.someField = a;
this.someOtherField = b;
}
}
SomeObject someObject = new SomeObject("first", "second");
Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE).create();
String jsonRepresentation = gson.toJson(someObject);
System.out.println(jsonRepresentation);
========出力=========
{"custom_naming":"first","SomeOtherField":"second"}
しかし、あなたが望むもののために、あなたはこれを使うことができます:
Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE).create();
UPPER_CAMEL_CASEオプションを使用すると、目標を達成できます。