- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有如下所示的 JsonObject
{"status":"ACTIVE","accounts":{"email":"email@gmail.com","name":"Test"}}
如何在 java 中使用类似 jsonObj.remove("email")
的方法从 JsonObject 中删除 Json 键“email”及其值
JsonObj.removev 在我需要删除状态键时为我工作 jsonObj.remove("status")
更新
一些背景,这主要是为了测试一个休息端点。在我的测试中,我使用 Builder 模式创建了与有效负载匹配的 java 对象,然后使用 GsonBuilder 转换为 Json,例如
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
public class JsonConvertor() {
public static JsonObject convertToJsonObject(Object payload) {
GsonBuilder builder = new GsonBuilder();
return (JsonObject) builder.setFieldNamingPolicy(FieldNamingPolicy.Policy).
create().toJsonTree(payload);
}}
如果我需要删除我使用的必填字段,请在由上述函数创建的 Json 对象上使用 JsonObj.remove("key")。
最佳答案
如果 Gson 像 Jackson(我假设是这样),您必须首先从根对象中获取 JsonObject
“accounts”,然后删除成员“email”,例如像这样:
jsonObj.getAsJsonObject("accounts").remove("email");
或者 - 并且可能是首选方式 - 您可以将 json 对象映射到 POJO(具有字段“status”、“accounts”和“accounts”的对象将指向另一个 POJO),导航到 accounts-POJO并在那里将“电子邮件”设置为空。然后,您将根 POJO 重新格式化为 JSON 并应用忽略具有空值的字段的设置。
编辑(回答评论中的问题):
简而言之,我不知道是否有内置功能,但它应该是可行的。
问题是,如果您只提供 email
等键,您可能会遇到有多个键的情况,因此很难识别正确的键。因此,最好将 key 提供为 accounts.email
并将“ key ”拆分为子表达式,然后使用这些部分遍历 Json 树或将 Json 转换为 POJO 并使用一些表达式语言(例如 Java EL 或 OGNL)来遍历 POJO。
如果您想删除所有名为 email
的属性,您可以遍历整个 json 树,检查是否存在具有该名称的属性,如果有则将其删除。
关于java - 从 JsonObject 中的 Json 中删除键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34092346/
我找不到答案。尝试了很多网站,包括这个。我想知道问题出在哪里。 错误是:org.json.JSONException:java.lang.String类型的值连接无法转换为JSONObject 这是我
我从 Java 应用程序提交了一个查询,该查询在 Elasticsearch 服务器上运行时以字符串形式返回结果。我希望结果为 JSONObject 列表对象。我可以将字符串转换为 JSONObjec
我正在尝试解析 JSON 字符串,但在尝试获取嵌套对象时出现错误: JSONObject jsonObject = new JSONObject(jsonString); System.out.pri
我有这样的 API 输出: {"user" : {"status" : {"stat1" : "54", "stats2" : "87"}}} 我从这个 API 创建了一个简单的 JSONObject
我正在寻找一种方法来比较两个 JSONObjects 除了使用 JSONObject.toString().equals(JSONObject.toString()) 并遇到了这种类似的方法,但它的比
我在读取和写入 Json 文件时遇到问题。我想将一些内容附加到 json 文件中,但它无法正常工作:它只是放入一个新的 json 对象,而没有使用 ',' 将其与前一个对象分开。我在每个网站上到处搜索
我有 JSON 文件:“D://test.json”,它遵循 MongoDB 格式: { "key":"value" } { "embedded": { "key2": "value2" } } {
我想要一个像这样的 json 文件: { "resu0": {"item":"value"} "resu1": {"item":"value"} "resu2": {"item":"value"} }
我有一个像这样的 JSON { "result": { "issue_date": "xx-yy-zzzz", "father/husband": "TEST",
我想发送json,里面有另一个json对象,像这样 { "key1": "value1", "key2": "valu2", "content": {
private JSONObject insertJSONintoJSON(JSONObject newJSON, JSONObject parent) { Object[] a = pare
常规更新:我之前询问是否可以按原样获取 JSONObject 的值,以便稍后将其与覆盖的版本进行比较。我的第一次尝试是: JSONObject oldObj = new JSONObject(); p
我正在尝试创建一个具有特定键和空值的 JSONObject。但该值应该是 JSONObject 而不是 JSONArray。 我已经使用 localJson.append(key, JSONObjec
我得到的所有资源都是从 JSONArray 获取 JSONObject。但在这种情况下,我想获得“temp”的温度。我不认为它是数组的一部分。我怎样才能得到它? { "coord":{
我正在尝试解析 JSONObject 以获取 JSON 数组的数据。 但问题是 JSONParser 是 org.json.simple.JSONParser 中的一个类,而 JSONObject 位
我发现 variable instanceof JSONObject 有奇怪的行为。我有以下代码: Object value; try { value = customer.get(key);
JsonObject 和 JSONObject 有什么区别? 当我们使用 put、add 和 addproperty 方法时,我有点混淆 JsonObject 和 JSONObject。 提前致谢。
我想从 Another JSONObject 中的一个 JSONObject 中检索数据谁能告诉我如何取回它们 我的JSONObject是这样的 {"udetail":{"ID":238597,"Re
你是否注意到,如果你使用 put() 将一个 JSONObject 放入另一个 JSONObject,容器 JSONObject 将不会存储对第一个 JSONObject 的引用,而是一个新的 JSO
我的应用程序构建得很好,但是当我运行它时,当以下行尝试执行时,我不断收到异常: JSONObject json = new JSONObject(); 我收到以下异常: 异常 javax.servle
我是一名优秀的程序员,十分优秀!