简体   繁体   English

如何在 Groovy 中的反斜杠中嵌入值时更新 JSON 有效载荷

[英]How to update JSON payload when values are embedded in backslash in Groovy

In Groovy I have to update values in JSON payload and make an API call.在 Groovy 中,我必须更新 JSON 有效负载中的值并进行 API 调用。 I am running into challenges while updating payload as the fields are embedded in backslash.由于字段嵌入反斜杠中,我在更新有效负载时遇到了挑战。 Is there a simpler way to directly update the servers in below payload ie update 1. JSON payload to 2. Updated JSON payload (updating name and host values).是否有更简单的方法直接更新以下有效负载中的服务器,即将 1. JSON 有效负载更新为2. 更新 JSON 有效负载(更新名称和主机值)。

1. JSON payload: 1. JSON 载荷:

    {
    "environment": "dev",
    "config": "Create",
    "configType": "Server",
    "ServerName": "",
    "Servers": "[\\{\"name\":\"Server-test_1\",\"host\":\"test.com\",\"port\":\"443\",\"tls\":\"2-way\"}]",
    "tsHost": "",
    "tsPort": "",
    "tsSSLOption": "1-way"
    }

2. Updated JSON payload: 2. 更新JSON payload:

    {
    "environment": "dev",
    "config": "Update",
    "configType": "Server",
    "ServerName": "",
    "Servers": "[\\{\"name\":\"Server-test_2\",\"host\":\"test123.com\",\"port\":\"443\",\"tls\":\"2-way\"}]",
    "tsHost": "",
    "tsPort": "",
    "tsSSLOption": "1-way"
    }

Tried below (losing backslash in conversion process):在下面尝试过(在转换过程中丢失反斜杠):

Code:代码:

    def json = $/ {
    "environment": "dev",
    "config": "Create",
    "configType": "Server",
    "ServerName": "",
    "Servers": "[\\{\"name\":\"Server-test_1\",\"host\":\"test.com\",\"port\":\"443\",\"tls\":\"2-way\"}]",
    "tsHost": "",
    "tsPort": "",
    "tsSSLOption": "1-way"
    } 
/$
    def parser = new JsonSlurper()
    def jsonResp = parser.parseText(json)
    println(jsonResp.Servers)
    jsonResp.Servers.name = "Server-test_2"
    jsonResp.Servers.host = "test123.com"

Servers is a string in your initial json - you have to parse it Servers是您初始 json 中的一个字符串 - 您必须解析它

import groovy.json.*

def json = $/ {
    "environment": "dev",
    "config": "Create",
    "configType": "Server",
    "ServerName": "",
    "Servers": "[{\"name\":\"Server-test_1\",\"host\":\"test.com\",\"port\":\"443\",\"tls\":\"2-way\"}]",
    "tsHost": "",
    "tsPort": "",
    "tsSSLOption": "1-way"
    } 
/$
def parser = new JsonSlurper()
def jsonResp = parser.parseText(json)
println(jsonResp.Servers)

def servers = parser.parseText(jsonResp.Servers)
servers[0].name="Server-test_2"
servers[0].host="test123.com"
jsonResp.Servers = JsonOutput.toJson(servers)
json = JsonOutput.prettyPrint(JsonOutput.toJson(jsonResp))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM