【问题标题】:Converting from javax.json.JsonArray to org.json.JSONArray从 javax.json.JsonArray 转换为 org.json.JSONArray
【发布时间】:2019-08-13 21:06:25
【问题描述】:

是否可以从较新的 EJB JSON 库转换为较旧的 org.json 库而不必依赖 org.json.simple 或 GS​​ON?

在下面的例子中,“按钮”是一个填充的 JsonArray,我正在尝试将它复制到一个 JSONArray 中以用于遗留代码。但是从字符串化值初始化 JSONArray 总是失败,并显示“A JSONObject 文本必须以 '{' 开头”,因为引号被视为第一个字符而不是花括号。

JSONArray newButtons = new JSONArray(); for (int i = 0; i < buttons.size(); i++) { JsonString button = buttons.getJsonString(i); newButtons.put(new JSONArray(button.toString())); } return new JSONArray(newButtons);

似乎没有任何类型的 org.json 对象可以使用 javax.json 库中的 toString() 值从字符串构造函数初始化。我设法将数据从 org.json 结构移动到 javax.json 结构,但反之亦然。 org.json 库是否太不灵活而无法做到这一点?

【问题讨论】:

    标签: java org.json javax.json


    【解决方案1】:

    我还没有尝试过,但我相信以下应该可以工作。

    JSONArray newButtons = new JSONArray();
    for (int i = 0; i < buttons.size(); i++) {
        JsonObject button = buttons.getJsonObject(i);
        newButtons.put(new org.json.JSONObject(button.toString()));
    }
    return newButtons;
    

    通过以下行,您首先获得索引为“i”的对象,然后从中创建一个 JSON 字符串。您的原始代码将元素“i”作为值而不是对象返回。

    JsonString button = buttons.getJsonObject(i).toString();
    

    【讨论】:

    • 我怀疑toString() 会返回JsonObject
    • 如果您只是要将字符串化为 JSON 文本,为什么不在整个数组上进行,并且在没有任何循环的情况下完成呢?
    • 是的,我删除了“toString()”。谢谢提及。
    猜你喜欢
    • 2013-06-30
    • 1970-01-01
    • 2020-11-14
    • 2018-05-12
    • 1970-01-01
    • 1970-01-01
    • 2014-02-03
    • 2017-01-03
    相关资源
    最近更新 更多