Замена символа в конкретном месте в строке JSON

Рейтинг: 0Ответов: 1Опубликовано: 20.01.2023

Есть ли возможность убрать в строке

T{"fields":{"summary":"TEST 3","issuetype":{"id":"10100"},"customfield_10106":"797","project":{"key":"SP"}},"properties":[{"key":"jira_linker_incoming_sync","value":"true"},{"key":"remote_issue_link","value":"https:\/\/jira.test.autentica.lv\/browse\/BUR-378"},{"key":"remote_issue_key","value":"BUR-378"}]}

в месте где "customfield_10106":"797" кавычки вокруг 797, остальные не трогать. Число в том месте может быть любое.

Ответы

▲ 1Принят

Для изменения строки в данном случае лучше использовать регулярное выражение: найти некоторое поле по имени, проверить, что соответствующее значение записано как строка и убрать кавычки для значения.

public static String convertFieldToNum(String json, String fieldName) {
    return json.replaceAll(String.format("(\"%s\")\\s*:\\s*\"(\\d+)\"", fieldName), "$1\\:$2");
}

Тест:

String json = "{\"fields\":{\"summary\":\"TEST 3\",\"issuetype\":{\"id\":\"10100\"},\"customfield_10106\":\"797\",\"project\":{\"key\":\"SP\"}},\"properties\":[{\"key\":\"jira_linker_incoming_sync\",\"value\":\"true\"},{\"key\":\"remote_issue_link\",\"value\":\"https:\\/\\/jira.test.autentica.lv\\/browse\\/BUR-378\"},{\"key\":\"remote_issue_key\",\"value\":\"BUR-378\"}]}";
System.out.println(convertFieldToNum(json, "customfield_10106"));

Вывод:

{"fields":{"summary":"TEST 3","issuetype":{"id":"10100"},"customfield_10106":797,"project":{"key":"SP"}},"properties":[{"key":"jira_linker_incoming_sync","value":"true"},{"key":"remote_issue_link","value":"https:\/\/jira.test.autentica.lv\/browse\/BUR-378"},{"key":"remote_issue_key","value":"BUR-378"}]}