java - 遍历嵌套的 Json Array 并对 String Java 执行操作
问题描述
我有这种格式的json数组
[
{
"promise_detail": [
{
"promise_date": "15 OCT 2020",
"promise_amount": "USD 1086",
"status": "CANCELLED"
}
],
"promise_note": "hello"
}
]
我的要求是我需要遍历 Json 数组并将承诺金额字段格式化为小数点后两位,类似于“USD 1086.00”
这是我想要做的
result = executeQueries.getPromiseHistoryDetails(promiseHistoryModel);//Here result is same Json Array as shown above
for (int n = 0; n < result.length(); n++) {
JSONObject object = result.getJSONObject(n);
for(int k=0;k<object.length();k++) { //struck here
String promiseAmount = object.getJSONObject(k);
Float amount=Float.parseFloat(promiseAmount);
if (object.get("promise_amount") != null) {
DecimalFormat df = new DecimalFormat("0.00");
df.setMaximumFractionDigits(2);
result.getJSONObject(n).put("promise_amount", df.format(amount));
}
}
}
但是我遇到了一些问题。我在这一点上感到震惊。谁能建议我如何实现这一点。这是我的预期输出
[
{
"promise_detail": [
{
"promise_date": "15 OCT 2020",
"promise_amount": "USD 1086.00",
"status": "CANCELLED"
}
],
"promise_note": "hello"
}
]
解决方案
看来您混淆了JSONArray
with的操作JSONObject
。内部 for 循环应该遍历 aJSONArray
而不是 a JSONObject
。
并且promise_amount
您给定的 JSON 字符串中的格式是 a String
,因此您可以.00
按如下方式附加到原始值:
代码片段
for (int n = 0; n < result.length(); n++) {
JSONArray object = result.getJSONObject(n).getJSONArray("promise_detail");
for (int k = 0; k < object.length(); k++) {
String promiseAmount = object.getJSONObject(k).getString("promise_amount");
if (promiseAmount != null) {
object.getJSONObject(k).put("promise_amount", String.format("%s.00", promiseAmount));
}
}
}
推荐阅读
- javascript - 我的 Discord 机器人不会用我制作的 Embed 回复
- java - 返回相同返回类型的对象会产生语法错误
- powershell - 将递归运行应用于 $com.GetDetailsOf 以获取长度参数
- django - 为什么Django可以处理多个请求?
- c++ - 我想知道如何填充基类然后派生类 C++
- javascript - 为什么 PHP 部分 Javascript 不能在 PHP 部分工作,但在 Html 部分工作正常?
- python - 使python输出打印并消失?
- r - 使用 R dplyr 汇总数据
- marklogic - 使用 xdmp:lock-acquire() 函数锁定文档时出现问题
- javascript - 通过 DOM 插入 JS 播放器失败