【问题标题】:How do I turn a JsonElement into Json without the members tag?如何在没有成员标签的情况下将 JsonElement 转换为 Json?
【发布时间】:2014-07-02 20:08:55
【问题描述】:

我有一个方法可以解析两个JsonElements 之间的差异,然后返回一个JsonElement,它表示一个只包含两个元素之间差异的对象。

然后,我尝试通过 API PUT 请求发送返回的 JsonElement,并一般将响应解析为对象类型。问题是JsonElements 解析为Json,其所有内容前面都有成员标签。

例如:

{"members":{"id":1172327,"assets":[{"id":436379,"licenseState":"MI","odometer":"12345"}]}}

如何从JsonElement 中删除成员标签。我宁愿不手动进行。我试过JsonElement.getAsJsonObject(),但失败了。我还尝试将JsonElement 设为JsonArray (JsonElement.getAsJsonArray().get(0)) 但这失败了,因为JsonElement 不是JsonArray

【问题讨论】:

    标签: android json parsing gson jsonobject


    【解决方案1】:
    import org.json.JSONObject;
    
    /** Assuming json_string is your json string **/
    
    JSONObject jsonObj = new JSONObject(json_string);
    
    JSONObject jsonMembers = jsonObj.getJSONObject("members");
    
    //will return "{"id":1172327,"assets":[{"id":436379,"licenseState":"MI","odometer":"12345"}]}"
    Log.d("Members only:",String.valueOf(jsonMembers));
    

    注意:请确保用 try/catch 包围,以防它不是有效的 json!

    希望这是您正在寻找的。​​p>

    【讨论】:

    • JsonObject test = new JsonObject(jsonString);构造函数 JsonObject(String) 未定义
    • @user2962960 您需要正确的导入。我已经更新了代码。如果您使用的是 eclipse,您可以将鼠标悬停在带红色下划线的文本上,然后在弹出窗口中单击“Import _____”,它将添加所需的导入。
    • 我使用的是 JsonElements (gson) 而不是 JSONElements 编辑:我可以使用 JsonObject test = JsonELement.getAsJsonObject();实现类似的结果,但在检查 test.getAsJsonObject("members") 后返回为 null
    • @user2962960 没关系。它不应该有所作为。 Gson 只是一个将对象转换为 JSON 的库。只需将 (Gson) 库吐出的 JSON 转换为字符串,然后将其放入新的“JSONObject”中
    【解决方案2】:

    如果你只是做 JsonElement.getJSONObject("members") 怎么办?这将使用关键“成员”获取元素

    【讨论】:

    • JsonElements 没有方法 .getAsJsonObject(string) only .getAsJsonObject() 我正在尝试将其转换为 JsonObject,然后现在获取“members”元素。我将编辑结果。编辑: JsonObject 测试 = JsonElement.getAsJsonObject(); test.getAsJsonObject("members") 返回 null。
    猜你喜欢
    • 1970-01-01
    • 2017-05-20
    • 1970-01-01
    • 2017-04-05
    • 2019-03-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-07
    • 1970-01-01
    相关资源
    最近更新 更多