java - 如何 "split"在不同 JSON 数组之间映射值?

标签 java json string-building

我有一个具有以下值的 multiMap:

a=1,b=2,c=3

我想用以下格式创建一个 JSON:

[{"data":["a","b","c"],"StaticData":"HELLO"},{"Categories":[1,2,3]}]

我正在尝试使用字符串缓冲区,但完全不知道如何仅对键和值进行循环以及如何在其间插入一些静态数据。

我想是否可以先创建一个字符串,然后以 json 格式解析,或者是否有其他方法来形成 json?

最佳答案

首先迭代 HashMap 以获取键和值并将其存储在 List 中。创建两个类,一个包含键列表和 staticData,另一个包含类别列表。在类对象中设置值,创建一个列表并将这两个类对象添加到列表中并将该列表序列化为 JSON。

我已经使用Gson Library将对象转换为 JSON 字符串。

这是您想要的代码。

数据类:

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 中插入的顺序相同。

关于java - 如何 "split"在不同 JSON 数组之间映射值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22189659/

相关文章:

java - 从句子中提取动词

php - AJAX,英特尔 XDK 不工作

javascript - 如何仅在 handsontable 中的几列上加载数据以更改单元格中下拉列表的值?

javascript - 使用 JSONP 的 AJAX 跨域数据

c# - 从 C# 中的组件部分构建目录字符串

java - 如何在不使用数组的情况下输入n个数字并按升序打印

java - 平等地抢占多余空间

java - 如何使用 Microsoft JDBC 驱动程序获取 Velocity 从数据源检索模板?

c++ - 如何将 double 值转换为字符串以便将其输出到 Win32 下的窗口标题栏

C++:如何将数据输出到多个.dat 文件?