gpt4 book ai didi

java - 用java中的另一个字符串替换JSON字符串

转载 作者:行者123 更新时间:2023-12-02 11:06:28 26 4
gpt4 key购买 nike

String str = "{"id":"4ebd7e4f","start_page_ui_id":"","business_unit":["5b65aced"],"props":{"metadata":"[]","postsPerPage":"20","network_id":"1b375ffd"},"render_engine":"twig"}"

这里我想将 "metadata":"[]"替换为 "metadata":"["key":"value,value1","key1":"value2"]"

为此我尝试替换为

str =str.replace("\"metadata\":\"[\"", "\"metadata\": \"[{\"key\":\"key\",\"val\":\"value,value1\"},{\"key\":\"key1\",\"val\":\"value2\"}");

但它并没有被取代。我不明白为什么??任何人都可以帮我解决这个问题吗?

我想将另一个字符串 "postsPerPage":"20"替换为 "postsPerPage":"6"

为此我尝试过

str = str .replace("\"postsPerPage\": \"20\",", "\"postsPerPage\": \"9\",");

这里的值也没有改变。

最佳答案

为此使用 JSON 第三方库,GSONJackson是最受欢迎的。

例如使用 GSON(仅适用于小样本!对于大块 JSON,您应该考虑使用流 API):

import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;

public class Main {

public static void main(String[] args) {
Gson gson = new Gson();
String str = "{\"id\":\"4ebd7e4f\",\"start_page_ui_id\":\"\",\"business_unit\":[\"5b65aced\"],\"props\":{\"metadata\":\"[]\",\"postsPerPage\":\"20\",\"network_id\":\"1b375ffd\"},\"render_engine\":\"twig\"}";
String metadataReplacementJson = "[{\"key\":\"key\",\"val\":\"value,value1\"},{\"key\":\"key1\",\"val\":\"value2\"}]";
JsonObject jsonObject = gson.fromJson(str, JsonObject.class);

jsonObject
.get("props")
.getAsJsonObject()
.remove("metadata");

jsonObject
.get("props")
.getAsJsonObject()
.add("metadata", gson.fromJson(metadataReplacementJson, JsonArray.class));

System.out.println(gson.toJson(jsonObject));
}
}

控制台输出:

{"id":"4ebd7e4f","start_page_ui_id":"","business_unit":["5b65aced"],"props":{"metadata":[{"key":"key","val":"value,value1"},{"key":"key1","val":"value2"}],"postsPerPage":"20","network_id":"1b375ffd"},"render_engine":"twig"}

关于java - 用java中的另一个字符串替换JSON字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50922671/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com