用GSON展平地图

时间:2014-05-06 10:55:42

标签: json map gson

假设我有以下Map<String, String>个值:v1: 2, v2: 5, v3: 0, v4: -9 ...

键是v1 - vn,但我不知道编译时n的确切值。

如何将所有这些键放入JSON对象中:

"item": { "v1": 2, "v2": 5, "v3": 0, "v4": -9 }

所以基本上我想要压扁它们。 有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您要生成的JSON无效,因为每个JSON字符串都是一个对象(以{)或数组开头(以[开头)。所以您可以达到的最接近的是类似这样:

{"item": { "v1": 2, "v2": 5, "v3": 0, "v4": -9 }}

此代码与N值完全相同,其中N = 10

package stackoverflow.questions.q23492756;

import java.util.*;

import com.google.gson.Gson;

public class Q23492756 {

    public static void main(String[] args){
        Map<String, Object> map = new HashMap<>();

        for(int i = 0; i < 10; i++){
            map.put("v"+i, i);
        }

        Map<String, Object> newMap = new HashMap<>();
        newMap.put("item", map);

        Gson g = new Gson();
        String s = g.toJson(newMap);

        System.out.println(s);

    }

}

这是结果(请注意,因为它是地图,因此键是无序的)

{"item":{"v1":1,"v0":0,"v7":7,"v5":5,"v6":6,"v4":4,"v9":9,"v3":3,"v8":8,"v2":2}}