遍历 .json 文件并打印 JAVA 中的所有值 [重复]
Posted
技术标签:
【中文标题】遍历 .json 文件并打印 JAVA 中的所有值 [重复]【英文标题】:iterate over .json file and print all values in JAVA [duplicate] 【发布时间】:2020-09-26 10:23:30 【问题描述】:这是一个包含许多产品价格的prices.json文件 我需要遍历这个 .json 以便与另一个系统的另一个 json 输出进行比较
我只需要获取字段 包含产品 ID 的“MATNR”字段 和 "NET_PRICE" = 包含增值税前的价格 和 "PRICE_INC_TAX" = 包含增值税后的价格
[
"customer":
"AUART": "",
"KALSM": "ZDPS00",
"KUNNR": "0001234567",
"SPRAS": "",
"VKGRP": "",
"VKORG": "1000",
"VTWEG": "10",
"ZMDD": "99",
"ZTERM": ""
,
"outdated": false,
"outputs": [
"KUNNR": "0001234567",
"KWMENG": "1",
"MATNR": "000000000001000001",
"NET_PRICE": "15.50",
"NET_PRICE_PER_BASE_UNIT": "15.50",
"ORDER": "1",
"PRICE_INC_TAX": "18.13",
"PRICE_INC_TAX_PER_BASE_UNIT": "18.13",
"TOTAL_TIME": "Total Calculation Time: 15ms",
"VRKME": "EA",
"converted_quantity": "1.00"
,
"KUNNR": "0001234567",
"KWMENG": "1",
"MATNR": "000000000001000002",
"NET_PRICE": "20.00",
"NET_PRICE_PER_BASE_UNIT": "20.00",
"ORDER": "1",
"PRICE_INC_TAX": "23.40",
"PRICE_INC_TAX_PER_BASE_UNIT": "23.40",
"TOTAL_TIME": "Total Calculation Time: 12ms",
"VRKME": "EA",
"converted_quantity": "1.00"
,
"KUNNR": "0001234567",
"KWMENG": "1",
"MATNR": "000000000001000003",
"NET_PRICE": "20.00",
"NET_PRICE_PER_BASE_UNIT": "21.00",
"ORDER": "1",
"PRICE_INC_TAX": "24.40",
"PRICE_INC_TAX_PER_BASE_UNIT": "24.40",
"TOTAL_TIME": "Total Calculation Time: 12ms",
"VRKME": "EA",
"converted_quantity": "1.00"
]
]
这是我正在尝试获取特定值的代码块,但它仍然不起作用:
public static void parseJson()
JSONParser jsonP = new JSONParser();
try (FileReader reader = new FileReader("MyJson.json"))
// Read JSON File
Object obj = jsonP.parse(reader);
JSONArray priceList = ((JSONArray) obj).get("outputs");
//1) getting error above line "The method get(int) in the type ArrayList is not applicable for the arguments (String)"
//2) TODO: here I want to iterate only the "MATNR", "NET_PRICE", PRICE_INC_TAX values
catch (FileNotFoundException e)
e.printStackTrace();
catch (IOException e)
e.printStackTrace();
catch (ParseException e)
e.printStackTrace();
我将非常感谢谁能解决我关于此方法的两个问题! 提前致谢
【问题讨论】:
最佳实践:使用 JSON 解析器。除此之外,没有“最佳实践”,只有许多可以以各种方式使用的不同 JSON 库。 在如何迭代 JSONObject? 的链接下还有另一个代码链接: 由于 JSON 文本以[
开头,它是一个 JSON 数组,并且您正确地将根对象转换为 JSONArray
。 outputs
的值也是以[
开头的,那你为什么要把emp.get("outputs")
转换成JSONObject
,明明是一个数组呢?
仅供参考: Java JSON 库太多了,所以请说明您使用的是哪一个。
使用:import org.json.simple.parser.JSONParser; 我们使用 javax.json.* 库来做这类事情。
try(JsonReader jsonReader = Json.createReader(new StringReader(myJsonString)))
JsonObject jsonObject = jsonReader.readObject();
return jsonObject.getJsonArray("outputs");
// TODO: don't return something, instead iterate over array and get attributes from objects.
catch(Exception exception)
// TODO: Do something with exception
希望对你有帮助。
【讨论】:
以上是关于遍历 .json 文件并打印 JAVA 中的所有值 [重复]的主要内容,如果未能解决你的问题,请参考以下文章