gpt4 book ai didi

java - 检查 REST 方法中是否存在 JSON Key

转载 作者:行者123 更新时间:2023-11-30 06:52:14 26 4
gpt4 key购买 nike

我正在实现 REST API,并想要检查通过我的 POST 方法传递的 JSON 格式的请求中是否存在 key 。

我正在寻找类似 jsonobject.haskey 的内容方法的类型。到目前为止,我已经遇到过 Jackson 和 json-simple 库,但它们的许多信息似乎已经过时,而且我在导航时遇到了困难。

我的目标是接受 JSON 格式的 POST 请求来创建资源实例。根据 JSON 对象中键的存在情况,将通过 setter 分配值。

如果您可以引导我访问一个库、一个 API 和一些示例,那将非常有帮助。

{
"id": 1,
"name": "A green door",
"price": 12.50,
"tags": ["home", "green"]
}

将被处理为

{
"id": 1,
"name": "A green door",
"price": 12.50,
"option":,
"tags": ["home", "green"]
}

因为JSON.hasOptionKey失败。

最佳答案

执行此操作的标准方法是在 JSON 请求负载和域对象之间建立某种契约,显然您可以使用一些简单的 JSON 解析库手动解析 json,但它很容易出错。

使用类似 GSON 的内容,您可以使用 Java 对象表示 JSON 结构,反之亦然,例如:

class X {
String id;
List<String> values;
}

将序列化为如下内容:

{"id": 3, "values": ["1", "2", "3"]}

然后,您还可以设置(反)序列化的选项,以便解析器知道如何处理 null,例如,如果 java 对象中缺少 id,则 JSON 将是

{"values": ["1", "2", "3"]}

更新

以下是 GSON 的使用示例(为简洁起见,删除了导入和 getter/setter):

public class Question42529415 {

private static final Gson GSON = new GsonBuilder()
.setPrettyPrinting()
//.serializeNulls()
.create();

private static Item fromPost(String postRequestJson) {
return GSON.fromJson(postRequestJson, Item.class);
}

private static String toClient(Item item) {
return GSON.toJson(item);
}

public static void main(String[] args) {
String clientReq = "{\n"
+ " \"id\": 1,\n"
+ " \"name\": \"A green door\",\n"
+ " \"price\": 12.50,\n"
+ " \"tags\": [\"home\", \"green\"]\n"
+ "}";

Item item = fromPost(clientReq);
System.out.println(item.getName() + " " + item.getOption());

item.setOption("modified option");
String modified = toClient(item);
System.out.println(modified);
}
}

class Item {
private String id;
private String name;
private String option;
private double price;
private List<String> tags;

// getters and setters
}

关于java - 检查 REST 方法中是否存在 JSON Key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42529415/

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