未正确创建JSONObject

时间:2015-10-15 15:01:50

标签: java json

我创建JsonObjectJsonArray如下:

JSONObject jObj = new JSONObject();
jObj.put("path", "dfds/g");
jObj.put("etag", "dfdsfsd");
jObj.put("size_bytes", 123);
JSONArray list = new JSONArray();
list.add(jObj);
String s = list.toJSONString();

我得到的结果:

[{"size_bytes":123,"etag":"dfdsfsd","path":"dfds\/g"}]
  1. 我希望路径组件为"path":"dfds\g",而不是dfds\/g
  2. 我需要字段在代码中按顺序排列,但它们并不像我预期的那样:path, etag, size_bytes 我很乐意获得如何解决上述问题的建议

2 个答案:

答案 0 :(得分:4)

Json编码器正在逃避正斜杠,这就是你获得\/的原因。这是完全合法的语法,不用担心。

您不必担心在Json字符串中进行排序,字段本身没有排序,依赖于此可能会在将来导致问题。

答案 1 :(得分:0)

如果您绝对必须从字符串中删除正斜杠,那么您可以这样做:

s = s.replace("\\/", "/");

有关详细信息,请参阅String replace a Backslash

我建议不要在这种情况下这样做。相反,您应该使用众多String解析库中的一个解析JSON

以下是您的示例String

的示例
public static void main(String[] args){
    String s = "[{\"size_bytes\":123,\"etag\":\"dfdsfsd\",\"path\":\"dfds\\/g\"}]";

    System.out.println(s);

    s = s.replace("\\/", "/");

    System.out.println(s);
}

<强>输出:

  

[{"size_bytes":123,"etag":"dfdsfsd","path":"dfds\/g"}]

     

[{"size_bytes":123,"etag":"dfdsfsd","path":"dfds/g"}]