gpt4 book ai didi

java - 在 Java 中是否有解析 Json 的通用方法?

转载 作者:搜寻专家 更新时间:2023-11-01 02:08:02 27 4
gpt4 key购买 nike

不幸的是,我已经尝试使用 gson 和 Jackson 解析器,但我无法实现我想要的。

{
"rateName": "My Special Rate",
"adjustments": [
{
"adjustmentType": "LOAN_AMOUNT_GREATER_THAN_550K",
"rate": 0.75
},
{
"adjustmentType": "AMORTIZATION_TERM_LESS_THAN_30_YEARS",
"rate": -0.2
}
],
"errorTypes": [],
"premiumTaxs": [],
"renewalPremiums": [],
"totalInitialRate": 1.95,
"optimumPricing": false,
"miPricingVO": null,
"rateCardId": "BALS_NR",
"ratingInfoBaseRate": 1.4
}

上面是我要解析的Json。我想创建通用方法,使用它我可以轻松地按名称访问值。例如:

  1. getName(rateName) - 应返回“我的特价”
  2. getNameFromArray(adjustmentType, adjustments) - 应该返回'LOAN_AMOUNT_GREATER_THAN_550K'

有没有办法做到这一点?它应该是通用的,以便可以应用于任何 Json 文件。

附加信息:我尝试使用 Gson,但这会解析整个文件并在找到数组时抛出错误。

JsonReader j = new JsonReader(new FileReader("Path of Json"));
j.beginObject();
while (j.hasNext()) {
String name = j.nextName();

if (name.equals("rateName")) {
System.out.println(j.nextString());
}
System.out.println(name);
}

我尝试使用 jackson 并遇到了与 Gson 相同的情况。

JsonFactory jfactory = new JsonFactory();
JsonParser jParser = jfactory.createJsonParser("Path of Json");
while (jParser.nextToken() != JsonToken.END_OBJECT) {
System.out.println(jParser.getCurrentName());;
}

最佳答案

如果说通用时指的是标准库,那么 org.json 就是那个库。

虽然不如 GSON 或 Jackson 直观,但使用起来很容易:

JSONObject jsonData = new JSONObject(jsonString);
String rateName= jsonData.getString("rateName");//My Special Rate

要解析数组你需要循环:

JSONArray adjustments = jsonData.getJSONArray("adjustments");
for(int i = 0; i < adjustments.length(); i++){
JSONObject adjustment = adjustments.getJSONObject(i);
String adjustmentType = adjustment.getString("adjustmentType");
}

关于java - 在 Java 中是否有解析 Json 的通用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26344756/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com