gpt4 book ai didi

java - Resteasy:如何保存不固定键的 JSON

转载 作者:太空宇宙 更新时间:2023-11-04 12:25:49 25 4
gpt4 key购买 nike

我使用 easteasy 调用 REST API。

我的问题是来自 REST API 的 JSON 具有动态值。例如:

 "labels": {
"kubernetes.io/hostname": "192.168.200.176",
"node": "master"
}

其中“node”和“kubernetes.io/hostname”可以是任何字符串。

我尝试将“标签”映射到 Map <String, String>目的。变量已正确创建,但它仍然为空。如何生成字典,例如 {"kubernetes.io/hostname": "192.168.200.176", "node": "master"} ?`

最佳答案

如果您愿意只创建一个 Map 而不是特定的域对象,您可以简单地自己解析 JSON 以获取键列表并自己创建 Map。

这是一个使用 org.json 的示例:

import java.util.HashMap;
import java.util.Map;

import org.json.JSONObject;

public class Scratch {
public static void main(String[] args) throws Exception {
String json = "{ \"labels\": { \"kubernetes.io/hostname\": \"192.168.200.176\", \"node\": \"master\" } }";
Map<String, String> library = new HashMap<>();

// parse the input string
JSONObject labels = new JSONObject(json).getJSONObject("labels");

// iterate over keys and insert into Map
for (String key : labels.keySet()) {
library.put(key, labels.getString(key));
}

System.out.println(library);
// {kubernetes.io/hostname=192.168.200.176, node=master}
}
}


您也可以使用 Gson 做或多或少相同的事情。 ,只需将 Map 包装在容器类中,并让它进行实际的反序列化:

import java.util.Map;
import com.google.gson.Gson;

public class Scratch {
public static void main(String[] args) throws Exception {
String json = "{ \"labels\": { \"kubernetes.io/hostname\": \"192.168.200.176\", \"node\": \"master\" } }";

Library library = new Gson().fromJson(json, Library.class);
System.out.println(library.labels);
// {kubernetes.io/hostname=192.168.200.176, node=master}
}
}

class Library {
Map<String, String> labels;
}


在这两种情况下,请注意,您必须从 JSON 的“标签”字段内部获取数据,而不是顶层。

关于java - Resteasy:如何保存不固定键的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38399902/

25 4 0
文章推荐: java - 在 Java 中提取长度超过 64 个字符的 IPTC 关键字
文章推荐: c++ - 构造/破坏 QApplication 导致 QWebView 搞乱 HTML 的呈现
文章推荐: c++ - nsIDOMNSHTMLElement IID 更改
文章推荐: javascript - 如何在固定的