gpt4 book ai didi

android - 使用一个条目将 JSONObject 强制转换为 JSONArray

转载 作者:太空狗 更新时间:2023-10-29 15:53:15 24 4
gpt4 key购买 nike

我正在从我的服务器中检索一些 JSON 数据。有时这可以以 JSONObject(一个对象)或 JSONArray(多个对象)的形式出现。我知道如何检测它是一个数组还是一个对象...但问题是检测它意味着我必须有两个完全独立的逻辑位,一个用于对象和一个用于数组。这是一个非常不干净的解决方案,令我惊讶的是没有经常被问及。

我想做的是:如果 JSON 是一个 JSONObject(一个对象),则将其转换为 JSONArray (只有一个条目)。然后我可以继续执行解释 JSONArray 的正常逻辑。

我的 JSON 会像这样进来:

{
"Changes":
{
"Row":
{
"@ChangeId":"17192386","@Type":"U","@TableName":"Change","@PK":"g1fbb6c7-abcf-e741-846c-b499baf5845d","@ColList":"date"
},
"Data":
{
"@date":"22/05/2014 09:03:00"
}
}
}

通常我在RowData 对象中有多个记录。但在这种情况下,我每人只有一个。我常用的方法是:

JSONObject jsonObj = new JSONObject(jsonString);
JSONObject changes = jsonObj.getJSONObject("Changes");
JSONArray arrChanges = changes.getJSONArray("Row");
JSONArray arrData = changes.getJSONArray("Data");

// Cycle through arrays here

此代码将在 .getJSONArray("Row"); 行崩溃。

为避免这种情况,在我拥有changes 对象后,我想强制将RowData 对象放入JSONArray,即使只有一个值——如上,所以我可以继续我的正常逻辑。有办法做到这一点吗?

最佳答案

使用此方法将 JSONObject 转换为 JSONArray :

JSONObject jsonObj = new JSONObject(jsonString);
JSONObject changes = jsonObj.getJSONObject("Changes");
JSONArray arrChanges = covertJsonObjectToJsonArray(changes.get("Row"));
JSONArray arrData = covertJsonObjectToJsonArray(changes.get("Data"));


public JSONArray covertJsonObjectToJsonArray(Object InsideArray) {

JSONArray jsonArray;

if (InsideArray instanceof JSONArray) {
jsonArray = (JSONArray) InsideArray;
} else {
jsonArray = new JSONArray();
jsonArray.put((JSONObject) InsideArray);
}
return jsonArray;
}

如果 JSONArray 存在,那么它将返回 JSONArray,如果 JSONArray 仍然存在,它将返回 JSONArray.

关于android - 使用一个条目将 JSONObject 强制转换为 JSONArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23806122/

24 4 0
文章推荐: android - 防止 greenDAO 插入重复条目
文章推荐: javascript - 如何防止javascript中的事件冒泡
文章推荐: javascript - 当我的网站加载时,如何为我的 `
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com