【问题标题】:Java: Converting a String to JSONArray, or Spliting an String the right wayJava:将字符串转换为 JSONArray,或以正确的方式拆分字符串
【发布时间】:2020-06-03 17:38:08
【问题描述】:

我有一个不寻常的问题,如下所示:

问题 1:如何以正确的方式拆分字符串,以便将 json 文件条目彼此分开。

或问题:如何将字符串转换为 JSONArray。

JSON:

[
   {
   "id":"123483",
      "content":{
         "amount":"460",
         "price":"2.15",
         "name":"Post-it Block weiß",
         "weight":"0.3",
         "category":"Notizzettel"
 } 
},
   {
      "id":"501993",
      "content":{
         "amount":"83",
         "price":"25.0",
         "name":"Trennstreifen 5x 100 bunt",
         "weight":"0.024",
         "category":"Register"

   }

}
]

我尝试了什么: //内容成功封装了所有的json内容。

Path path = Paths.get("src/com/json/inventory.json");
String content = new String(Files.readAllBytes(path), Charset.defaultCharset());


JSONArray jsonArray = new JSONArray(); 
JSONObject jsnobject = new JSONObject(content);
jsonArray.put(jsnobject);

JSONArray 的错误:Errors

【问题讨论】:

    标签: java arrays json


    【解决方案1】:

    您的内容是一个数组,而不是单个对象。

    试试new JSONArray(content);

    或者使用 Jackson 或 Gson 之类的库将文件读入 POJO 类列表

    另请注意,运行时您的代码不存在 src 文件夹。放置资源文件的标准布局是这样的

    src
      main
        java 
          Code.java 
      resources
        file.json
    

    而你使用 ClassLoader 来读取文件

    【讨论】:

    • 它确实工作得很好,现在我需要找到一种方法来访问其中的内容。我是什么意思:如果你做 jsonArray.get(0) = 你得到了 json 数组中的第一个条目,但是我似乎无法得到诸如 Id、内容等之类的东西。你知道怎么做吗?
    • 我建议研究 jsonpath
    【解决方案2】:

    你必须做new JSONArray(content); 而不是new JSONObject(content);

    因为如果你采用第二种方式,java 会尝试将数组转换为单个对象。

    你可以在这个post看到更多信息

    【讨论】:

      猜你喜欢
      • 2015-02-16
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-30
      • 2011-09-21
      相关资源
      最近更新 更多