最初に HashMap を反復処理してキーと値を取得し、それを List に格納します。2 つのクラスを作成します。1 つはキーのリストと staticData を含み、もう 1 つはカテゴリのリストを含みます。クラス オブジェクトに値を設定し、1 つのリストを作成し、このクラスの 2 つのオブジェクトをリストに追加し、このリストを JSON にシリアル化します。
オブジェクトをJSON文字列に変換するために Gsonライブラリを使用しました。
ここにあなたが望むコードがあります。
データクラス:
public class DataClass {
private List<String> data;
private String StaticData;
//your getter and setter method.
}
カテゴリ クラス :
public class CategoryClass {
private List<String> Categories;
//your getter and setter method
}
テストクラス:
public static void main(String[] args) {
try{
Map<String, String> map = new HashMap<String, String>();
map.put("a", "1");
map.put("b", "2");
map.put("c", "3");
List<Object> obj = new ArrayList<Object>();
List<String> keys = new ArrayList<String>();
List<String> values = new ArrayList<String>();
for(Entry<String, String> myMap : map.entrySet()){
keys.add(myMap.getKey());
values.add(myMap.getValue());
}
DataClass dataObj = new DataClass();
dataObj.setData(keys);
dataObj.setStaticData("HELLO");
obj.add(dataObj);
CategoryClass catObj = new CategoryClass();
catObj.setCategories(values);
obj.add(catObj);
Gson gson = new Gson();
String jsonStr = gson.toJson(obj);
System.out.println(jsonStr);
}
catch(Exception ex){
ex.printStackTrace();
}
}
出力:
[{"data":["b","c","a"],"StaticData":"HELLO"},{"Categories":["2","3","1"]}]
編集 :
Map への挿入順序を維持する必要がある場合はLinkedHashMap
、キーと値の順序が Map への挿入と同じになるようにします。