如何将数据放入已解析的JSONObject

问题描述

我有一些解析代码,要解析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);

希望对您有帮助。