转换JSON结构

我在一个JSON结构中有一组数据:

[[task1, 10, 99], [task2, 10, 99], [task3, 10, 99], [task1, 11, 99], [task2, 11, 99], [task3, 11, 99]] 

并需要将其转换为另一个JSON结构:

 [{ label: "task1", data: [[10, 99], [11, 99]] }, { label: "task2", data: [[10, 99], [11, 99]] }, { label: "task3", data: [[10, 99], [11, 99]] }] 

使用javascript / java执行此操作的最佳方法是什么?

对于Java,您可以使用JSON.org中的json-simple。 我不认为有一种“聪明”的方式,正如其他人所说,你只需要将JSON转换为真实对象,操纵和转换回来。 (见下文)另外我相信你必须引用文字字符串,例如。 “task1”,“label”,“data”使它成为有效的JSON(或者至少json-simple不接受它,如果你没有)

  package com.another; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import org.json.simple.JSONArray; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; public class NewClass { public static final String inputString = "[ [\"task1\", 10, 99], [\"task2\", 10, 99], [\"task3\", 10, 99], [\"task1\", 11, 99], [\"task2\", 11, 99], [\"task3\", 11, 99]]"; public static void main(String[] args) throws ParseException { JSONArray obj = (JSONArray) new JSONParser().parse(inputString); Map output = new HashMap(); for (Object o : obj) { JSONArray item = (JSONArray) o; Object title = item.get(0); Object first = item.get(1); Object second = item.get(2); JSONObject dest = output.get(title); if (dest == null) { dest = new JSONObject(); output.put(title, dest); dest.put("label", title); dest.put("data", new JSONArray()); } JSONArray data = new JSONArray(); data.add(first); data.add(second); ((JSONArray) dest.get("data")).add(data); } String outputString = JSONArray.toJSONString(Arrays.asList(output.values().toArray())); System.out.println(outputString); } } 

这是在JS

 var inputString = "[ [\"task1\", 10, 99], [\"task2\", 10, 99], [\"task3\", 10, 99], [\"task1\", 11, 99], [\"task2\", 11, 99], [\"task3\", 11, 99]]"; var obj = JSON.parse(inputString); var output = new Object(); for (var i in obj) { var item = obj[i]; var title = item[0]; var first = item[1]; var second = item[2]; var dest = output[title]; if (dest == null) { dest = { "label" : title, "data": new Array() }; output[title] = dest; } dest.data.push([first, second]); } var outputArray = new Array(); for (var t in output) { outputArray.push(output[t]); } 

首先,您需要解析JSON以获取真实对象。

使用JavaScript,您只需eval()它,或使用JSON.parse() 。 JSON.org上有一个JSON实现,用于没有内置的浏览器。

对于Java(一种完全不同的语言), JSON.org还有一个可以使用的JSON解析器的实现。

一旦你有了它的对象,你就可以重新安排,直到你心脏的内容,然后JSON.stringify() (在JS中)转换回JSON。

试试Jolt 。 它是一个java库,允许您在json中指定转换。