java - java - 用json对象数组替换JSON中的字符串
问题描述
我有一个 JSON:
{
"payment_intent": {
"amount": "Amount",
"currency_code": "840",
"invoice_number": "pay-automation-invoice-no-01",
"payment_intent_id": "pay-automation-return-intent-id-01",
"intent_reference_id": "pay-automation-intent-reference-id-01"
},
"payment_refundable_intents": {
"transactions": {
"sales": "pay-automation-sales"
}
}
}
现在,当我尝试用JSONArray
using替换字符串“pay-automation-sales”时
payloadJson = payloadJson.replaceAll("pay-automation-sales", salesString);
salesString
是
[{"amount":"200.0","payment_intent_id":"29518150","tender_type":"cash","reference_id":"db79893a-9fe0-4391-91f8-fbc-cash-6c88-66db","intent_reference_id":"db79893a-9fe0-4391-91f8-fbc7945ce446","id":"000000893275","status":"Approved"},{"amount":"800.0","payment_intent_id":"29518150","tender_type":"cash","reference_id":"db79893a-9fe0-4391-91f8-fbc-cash-1d12-8466","intent_reference_id":"db79893a-9fe0-4391-91f8-fbc7945ce446","id":"000000893282","status":"Approved"}]
在这里,payloadJson
是类型String
。工作正常,replaceAll
但实际上我想将“销售”作为 JSON 中的对象数组传递。但它是这样通过的,它不是有效的 JSON 格式。我认为 JSON 中键值的双引号sales
会导致一个问题。
"sales": "[{"amount":"200.0","payment_intent_id":"29518150","tender_type":"cash","reference_id":"db79893a-9fe0-4391-91f8-fbc-cash-6c88-66db","intent_reference_id":"db79893a-9fe0-4391-91f8-fbc7945ce446","id":"000000893275","status":"Approved"},{"amount":"800.0","payment_intent_id":"29518150","tender_type":"cash","reference_id":"db79893a-9fe0-4391-91f8-fbc-cash-1d12-8466","intent_reference_id":"db79893a-9fe0-4391-91f8-fbc7945ce446","id":"000000893282","status":"Approved"}]"
如何用有效的 JSON 对象数组替换 JSON 中的字符串?
解决方案
由于您在String
这里使用对象而不是某种形式的 JSON 对象模型,所以当您这样做时
payloadJson = payloadJson.replaceAll("pay-automation-sales", salesString);
它找到了字符串
pay-automation-sales
内payloadJson
并将其逐字替换为salesString
. 请注意,您没有告诉它在被替换部分的原始字符串中包含引号。
它应该是
payloadJson = payloadJson.replaceAll("\"pay-automation-sales\"", salesString);
使用真正的 JSON 库可能会更好,该库可以理解 JSON 语法并可以将 JSON 作为内存中的文档模型进行操作。
推荐阅读
- c# - C# IMemoryCache - 修改对象属性而不更新内存缓存
- typescript - 返回具有相同参数的类型对象
- c# - C# StructLayout 和处置
- android-studio - 最小化 Android Studio 中的片段
- javascript - JavaScript中的对象,对象文字和模板文字有什么区别
- r - 如何更改分组格点 xyplot 中的 x 轴值
- python - 如何在 Flask cookie 会话中安全地存储 OAuth 凭据?
- c - 理解 %*d 和 if (( scanf( "%d", &n ) != 1 ) || ( n <= 0 )) in c
- javascript - 打字稿 | 从对象 T 中提取具有类型 K 值的所有键名
- mongodb - 同一文档中的 $match expr 不起作用