首页 > 解决方案 > 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"
        }
    }
}

现在,当我尝试用JSONArrayusing替换字符串“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 中的字符串?

标签: javajson

解决方案


由于您在String这里使用对象而不是某种形式的 JSON 对象模型,所以当您这样做时

payloadJson = payloadJson.replaceAll("pay-automation-sales", salesString);

它找到了字符串

pay-automation-sales

payloadJson并将其逐字替换为salesString. 请注意,您没有告诉它在被替换部分的原始字符串中包含引号。

它应该是

payloadJson = payloadJson.replaceAll("\"pay-automation-sales\"", salesString);

使用真正的 JSON 库可能会更好,该库可以理解 JSON 语法并可以将 JSON 作为内存中的文档模型进行操作。


推荐阅读