将两个数组合并为JSON

时间:2015-02-08 16:36:01

标签: java arrays json dictionary

我有两个数组,

Array 1 = [ a, b, c, d]
Array 2 = [ 1, 2, 3, 4]

我需要像字典/地图一样合并它们(数组1是键,数组2是值)并将其转换为JSON。

下面是转换后的字典/地图到JSON和最终想要的结果。

{"a":"1", "b":"2", "c":"3", "d":"4"}

7 个答案:

答案 0 :(得分:2)

作为简单代码的一个例子。

如果你有两个数组,让我们说数组A和B,只需迭代它们并创建它们的JSONObject,其中数组A是键,数组B是值。

基本代码示例:

JSONObject map = new JSONObject()
for(int i =0; i<array.size(); i++) {
  map.put(arrayA.[i],arrayB[i]);
}
return map;

答案 1 :(得分:1)

看起来您并不想将两个数组合并为一个,但是您想要创建JSON对象,其中的键存储在第一个数组中,而值则存储在第二个数组中。在这种情况下,您可以使用org.json.JSONObject

这是一个简单的例子:

String[] keys = {"a",  "b",  "c",  "d"};
String[] values = {"aa", "bb", "cc", "dd"};

JSONObject jsonObject = new JSONObject();

for (int i = 0; i<keys.length; i++){
    jsonObject.put(keys[i], values[i]);
}

System.out.println(jsonObject);

输出{"a":"aa","b":"bb","c":"cc","d":"dd"}

答案 2 :(得分:0)

您可以使用jackson,然后将给定的列表合并到Map

    Map<String, String> map = new HashMap<>();

    Iterator<String> keys = Arrays.asList("a","b").iterator();
    Iterator<String> values = Arrays.asList("aa", "bb").iterator();

    while (keys.hasNext() && values.hasNext()) {
        map.put(keys.next(), values.next());
    }

    ObjectMapper mapper = new ObjectMapper();

    String result = mapper.writeValueAsString(map);

答案 3 :(得分:0)

感谢所有投入,特别感谢Pshemo。我的工作代码:

import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import org.codehaus.jackson.JsonGenerationException;

import org.codehaus.jackson.JsonGenerationException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;


public class ArrayToJason  {

    public static void main (String args[]) throws Exception{

        String [] value = {"a", "b" , "c", "d"};
        String [] key = {"aa", "bb", "cc", "dd"};

         Map <String, String> map1 = new HashMap();

            Iterator <String> keys = Arrays.asList(value).iterator();
            Iterator <String> values = Arrays.asList(key).iterator();

            while (keys.hasNext() && values.hasNext()) {
                map1.put(keys.next(), values.next());
            }

            ObjectMapper mapper = new ObjectMapper();
            try {
                String result = mapper.writeValueAsString(map1);

                System.out.println("Jason format " + result);

            }catch (JsonGenerationException e) {

                e.printStackTrace();


    }
}
}

**杰森格式{&#34; d&#34;:&#34; dd&#34;,&#34; b&#34;:&#34; bb&#34;,&#34; c&# 34;:&#34; CC&#34;&#34;&#34;:&#34; AA&#34;}

答案 4 :(得分:0)

org.json有一个简单的方法。

JSONArray keys = new JSONArray(Arrays.asList(array1));
JSONArray values = new JSONArray(Arrays.asList(array2));

JSONObject result = values.toJSONObject(keys);

答案 5 :(得分:-1)

将数组转换为JSON的最简单方法是:

JSONArray jsonArray = new JSONArray(Arrays.asList(myArray));

答案 6 :(得分:-1)

我假设你想要以下内容:

StringBuilder builder = new StringBuilder();
for (int i = 0; i < array1.length; i++)
{
    builder.append("\"");
    builder.append(array1[i]);
    builder.append("\":\"");
    builder.append(array2[i]);
    builder.append("\"");
    if (i < (array1.length - 1))
        builder.append(", ");
}
String result = builder.toString();