如何在java中将字符串转换为json,其中字符串同时包含json对象和数组

如何在java中将字符串转换为json,其中字符串同时包含json对象和数组,java,json,Java,Json,大家好,我正在尝试转换字符串json,其中字符串包含json对象和数组。两个字符串都缺少大括号或引号。我不知道发生了什么错误 String companyid="14"; String userid="1002"; String projectid="378"; String scenarioid="1"; String xTable = "[{\"Label\

大家好,我正在尝试转换字符串json,其中字符串包含json对象和数组。两个字符串都缺少大括号或引号。我不知道发生了什么错误

     String companyid="14";  
            String userid="1002";       
            String projectid="378";
            String scenarioid="1";      
            String xTable = "[{\"Label\":\"A\",\"Dimension\":\"0\"},{\"Label\":\"B\",\"Dimension\":\"10\"}]";
            String yTable = "[{\"Label\":\"1\",\"Dimension\":\"0\"},{\"Label\":\"2\",\"Dimension\":\"10\"}]";
            String zTable = "[{\"Label\":\"Floor1\",\"Dimension\":\"0\"},{\"Label\":\"Floor2\",\"Dimension\":\"10\"}]"; 

 String grid="{\"grids\":{\"xaxis\":\""+xTable+"},{\"yaxis\":\""+yTable+"},{\"zaxis\":\""+zTable+"}";
        String inJson="{\"grid\":\"" +grid + "\"}" ;
        JSONObject user = new JSONObject(inJson);
        System.out.println(user.getString("grid"));
错误:

Exception in thread "main" org.json.JSONException: Expected a ',' or '}' at 80 [character 81 line 1]
    at org.json.JSONTokener.syntaxError(JSONTokener.java:451)
    at org.json.JSONObject.<init>(JSONObject.java:231)
    at org.json.JSONObject.<init>(JSONObject.java:320)
    at JsonExcercise.main(JsonExcercise.java:20)

您得到的错误是:org.json.JSONException:应为“,”或“}” 第一步是检查“{”和“}”的数目是否匹配。 如果您查看代码:

String grid="{\"grids\":{\"xaxis\":\""+xTable+"},{\"yaxis\":\""+yTable+"},{\"zaxis\":\""+zTable+"}";
不平衡,缺少一个“}”

变量网格和inJson是错误的json格式,变量中有多余的前引号,您可以通过在线web工具进行验证,以下代码是正确的

 String companyid="14";
    String userid="1002";
    String projectid="378";
    String scenarioid="1";
    String xTable = "[{\"Label\":\"A\",\"Dimension\":\"0\"},{\"Label\":\"B\",\"Dimension\":\"10\"}]";
    String yTable = "[{\"Label\":\"1\",\"Dimension\":\"0\"},{\"Label\":\"2\",\"Dimension\":\"10\"}]";
    String zTable = "[{\"Label\":\"Floor1\",\"Dimension\":\"0\"},{\"Label\":\"Floor2\",\"Dimension\":\"10\"}]";
    String grid="{\"grids\":[{\"xaxis\":"+xTable+"},{\"yaxis\":"+yTable+"},{\"zaxis\":"+zTable+"}]}";
    String inJson="{\"companyid\":\"" +companyid + "\",\"userid\":\"" +userid + "\",\"projectid\":\"" +projectid + "\",\"scenarioid\":" +scenarioid + ",\"grid\":" +grid + "}" ;
    JSONObject user = new JSONObject(inJson);
    System.out.println(user.getString("companyid"));

您可以了解json数组和json对象

下面的转义序列问题是


字符串inJson={\grid\:\'+grid+\'}

第1行字符81无助于定位问题?System.out.printlnuser.getStringgrid;正在获取错误您可以使用user.getgrid或injson为:字符串injson={\companyid\:\+companyid+\,\userid\:\+userid+\,\projectid\:\+projectid+\,\scenarioid\:+scenarioid+,\grid\:\'+grid+\};