问题描述
我有一些解析代码,要解析JSONObject,我需要再添加一个JSONObject,但出现错误Unexpected token LEFT BRACE({)
,因为我的代码创建的是文件中的多个JSONObject,而不是解析的JSONObjec。这是创建对象的代码
aJson = (JSONObject) parser.parse(reader);
JSONObject json = new JSONObject();
JSONArray blockData = new JSONArray();
for(Block b : blocks){
json.put("player-name",p.getName());
json.put("uuid",p.getUniqueId().toString());
json.put("nearestPlayers",new JSONArray());
blockData.add(b.getLocation().getWorld().getName());
blockData.add(b.getLocation().getWorld().getEnvironment());
blockData.add(b.getLocation().getX());
blockData.add(b.getLocation().getY());
blockData.add(b.getLocation().getZ());
}
aJson.put(blockData,json);
这里是JSON
{"[\"world\",norMAL,-23.0,67.0,75.0]":{"player-name":"MisterFunny01","nearestPlayers":[],"uuid":"206d32da-bf72-3cfd-9a26-e374dd76da31"}} //here is that part// {"[\"world\","uuid":"206d32da-bf72-3cfd-9a26-e374dd76da31"},"[\"world\","uuid":"206d32da-bf72-3cfd-9a26-e374dd76da31"}}
解决方法
在JSON数组中,值的类型必须为字符串,数字,对象,数组,布尔值或null。数组保留相同类型的值,而不是不同类型的值。
查看您的代码,数组是对象的数组。因此,您必须先创建一个对象并添加值,然后再添加到数组中。
不要直接将值添加到数组,而是创建一个对象,然后将其添加到数组。
,您的代码错误。要将对象放入JSONObject
中,请阅读this document
在您的情况下,您需要将blockData
转换为String才能放入JSONObject。
就像这样:aJson.put(blockData as String,json);
希望对您有帮助。