Java - Json 数组到 json 对象
Java - Json array to json object
这看起来很简单,但我正在努力改变它:
{
"myList": [{
"id": 1,
"type": "EnergyBox",
"properties": ["Name : Eb1", "Prop2 : Val1", "PropN : ValN"]
}, {
"id": 2,
"type": "EnergyBox",
"properties": ["Name : Eb2", "Prop2 : Val2", "Prop3 : Val3"]
}]
}
进入这个:
{
"myList": [{
"id": 1,
"type": "EnergyBox",
"properties": {
"Name": "Eb1",
"Prop2": "Val1",
"PropN": "ValN"
}
}, {
"id": 2,
"type": "EnergyBox",
"properties": {
"Name": "Eb2",
"Prop2": "Val2",
"Prop3": "Val3"
}
}]
}
我正在使用 Java 8、Jackson 和 Simplejson 来解析数据,但不知何故,经过许多小时的尝试,仍然无法正常工作。
属性中的key-value像一个字符串可以吗?
为此目的,这应该有效:
JSONParser parser = new JSONParser();
JSONObject json = (JSONObject) parser.parse(jsonString);
JSONArray array = (JSONArray) json.get("myList");
for( int i = 0; i < array.size(); i++) {
JSONObject object = (JSONObject) array.get(i);
JSONArray jsonArray = (JSONArray) object.get("properties");
JSONObject newJObj = new JSONObject();
for(int j = 0; j < jsonArray.size(); j++) {
String[] keyValue = jsonArray.get(j).toString().split(" : ");
newJObj.put(keyValue[0], keyValue[1]);
}
newJObj.toJSONString();
object.put("properties", newJObj);
}
json.toJSONString();
我尝试根据您的要求转换 Json,请尝试以下代码。
public void test() throws JsonParseException, JsonMappingException, IOException {
String json = "{"+
"\"myList\": [{"+
"\"id\": 1,"+
"\"type\": \"EnergyBox\","+
"\"properties\": [\"Name : Eb1\", \"Prop2 : Val1\", \"PropN : ValN\"]"+
"}, {"+
"\"id\": 2,"+
"\"type\": \"EnergyBox\","+
"\"properties\": [\"Name : Eb2\", \"Prop2 : Val2\", \"Prop3 : Val3\"]"+
"}]"+
"}";
ObjectMapper mapper = new ObjectMapper();
JsonNode root = mapper.readTree(json);
JsonNode myList = root.get("myList");
myList.forEach(n -> {
System.out.println(n);
System.out.println(n.get("properties"));
ObjectNode updatedProperties = mapper.createObjectNode();
n.get("properties").forEach(p -> {
String[] vals = p.textValue().split(":");
updatedProperties.put(vals[0].trim(), vals[1].trim());
});
((ObjectNode)n).put("properties", updatedProperties);
});
System.out.println(myList);
}
JSONObject response= Array.getJSONObject(insert_your_Response);
try {
JSONArray Array = response.getJSONArray("myList");
assert Array != null;
for (int k = 0; k < Array.length(); k++) {
try {
JSONObject object1 = Array.getJSONObject(k);
int id = object1.getInt("id");
String type = object1.getString("type");
JSONObject propertiesObject=object1.getJSONObject("properties");
String Name = propertiesObject.getString("Name");
String Prop2 = propertiesObject.getString("Prop2");
String Prop3 = propertiesObject.getString("Prop3");
} catch (JSONException e) {
e.printStackTrace();
}
}
} catch (JSONException e) {
e.printStackTrace();
}
这看起来很简单,但我正在努力改变它:
{
"myList": [{
"id": 1,
"type": "EnergyBox",
"properties": ["Name : Eb1", "Prop2 : Val1", "PropN : ValN"]
}, {
"id": 2,
"type": "EnergyBox",
"properties": ["Name : Eb2", "Prop2 : Val2", "Prop3 : Val3"]
}]
}
进入这个:
{
"myList": [{
"id": 1,
"type": "EnergyBox",
"properties": {
"Name": "Eb1",
"Prop2": "Val1",
"PropN": "ValN"
}
}, {
"id": 2,
"type": "EnergyBox",
"properties": {
"Name": "Eb2",
"Prop2": "Val2",
"Prop3": "Val3"
}
}]
}
我正在使用 Java 8、Jackson 和 Simplejson 来解析数据,但不知何故,经过许多小时的尝试,仍然无法正常工作。
属性中的key-value像一个字符串可以吗? 为此目的,这应该有效:
JSONParser parser = new JSONParser();
JSONObject json = (JSONObject) parser.parse(jsonString);
JSONArray array = (JSONArray) json.get("myList");
for( int i = 0; i < array.size(); i++) {
JSONObject object = (JSONObject) array.get(i);
JSONArray jsonArray = (JSONArray) object.get("properties");
JSONObject newJObj = new JSONObject();
for(int j = 0; j < jsonArray.size(); j++) {
String[] keyValue = jsonArray.get(j).toString().split(" : ");
newJObj.put(keyValue[0], keyValue[1]);
}
newJObj.toJSONString();
object.put("properties", newJObj);
}
json.toJSONString();
我尝试根据您的要求转换 Json,请尝试以下代码。
public void test() throws JsonParseException, JsonMappingException, IOException {
String json = "{"+
"\"myList\": [{"+
"\"id\": 1,"+
"\"type\": \"EnergyBox\","+
"\"properties\": [\"Name : Eb1\", \"Prop2 : Val1\", \"PropN : ValN\"]"+
"}, {"+
"\"id\": 2,"+
"\"type\": \"EnergyBox\","+
"\"properties\": [\"Name : Eb2\", \"Prop2 : Val2\", \"Prop3 : Val3\"]"+
"}]"+
"}";
ObjectMapper mapper = new ObjectMapper();
JsonNode root = mapper.readTree(json);
JsonNode myList = root.get("myList");
myList.forEach(n -> {
System.out.println(n);
System.out.println(n.get("properties"));
ObjectNode updatedProperties = mapper.createObjectNode();
n.get("properties").forEach(p -> {
String[] vals = p.textValue().split(":");
updatedProperties.put(vals[0].trim(), vals[1].trim());
});
((ObjectNode)n).put("properties", updatedProperties);
});
System.out.println(myList);
}
JSONObject response= Array.getJSONObject(insert_your_Response);
try {
JSONArray Array = response.getJSONArray("myList");
assert Array != null;
for (int k = 0; k < Array.length(); k++) {
try {
JSONObject object1 = Array.getJSONObject(k);
int id = object1.getInt("id");
String type = object1.getString("type");
JSONObject propertiesObject=object1.getJSONObject("properties");
String Name = propertiesObject.getString("Name");
String Prop2 = propertiesObject.getString("Prop2");
String Prop3 = propertiesObject.getString("Prop3");
} catch (JSONException e) {
e.printStackTrace();
}
}
} catch (JSONException e) {
e.printStackTrace();
}