Android JSON字符串数组(无对象),提取数据

Android JSON字符串数组(无对象),提取数据,android,json,android-listview,arrays,Android,Json,Android Listview,Arrays,我有一个长JSON字符串,表示从WCF服务返回的string[]数组。数组元素只是字符串,而不是对象。这是返回数据的一个示例 ["1|ArrayElement1","2|ArrayElement2","3|ArrayElement3"..."n|ArrayElementn"] 我不介意将索引包含在字符串中,但我需要在Android中将字符串解析为ArrayList,以便使其适应ListView 由于这些从技术上讲不是JSONObject,我如何迭代它们并从每个数组元素中提取字符串?也许

我有一个长JSON字符串,表示从WCF服务返回的string[]数组。数组元素只是字符串,而不是对象。这是返回数据的一个示例

    ["1|ArrayElement1","2|ArrayElement2","3|ArrayElement3"..."n|ArrayElementn"]
我不介意将索引包含在字符串中,但我需要在Android中将字符串解析为ArrayList,以便使其适应ListView


由于这些从技术上讲不是JSONObject,我如何迭代它们并从每个数组元素中提取字符串?

也许这篇文章可以帮助您:

HashMap applicationSettings=newhashmap();
对于(int i=0;i
这是一个有效的JSON字符串数组,您可以像这样正常解析它

JSONArray jsonStrings = json.getJSONArray("items");
String strings[] = new String[jsonStrings.length()];
for(int i=0;i<strings.length;i++) {
strings[i] = jsonStrings.getString(i);
}
JSONArray jsonStrings=json.getJSONArray(“items”);
String strings[]=新字符串[jsonStrings.length()];

对于(int i=0;i,我只是想澄清一下,据我所知,您正在接收一个字符串的JSON数组,它是以数组索引和管道字符为前缀的有效JSON字符串

首先,我建议联系这个令人憎恶的东西的制造者,教训他们违反标准。如果他们不听,就和他们的老板谈谈。在我看来,这种事情是不可接受的,需要停止

第二,我建议这样做:

string[] element_strings = JSON.deserialize(WCF_string_result);
object[] elements = new object[element_strings.length];
for(int x = 0; x < elements.length; x++)
{
    int pipeIndex = element_strings.indexOf("|");
    elements[x] = JSON.deserialize(element_strings[x].substr(pipeIndex + 1));
}
string[]element\u strings=JSON.反序列化(WCF\u string\u result);
object[]elements=新对象[element_strings.length];
对于(int x=0;x
当然,这假设您有某种反序列化JSON对象字符串的方法。如果您没有,我建议使用Android中的内置库:


不太可能,我不得不做一些类似于你在其他Android项目中发布的事情,但那是处理包含对象的JSONArray。如果返回的数据是格式[“Name”:“the_Name”,…]我很好,但是如果你查看返回的数据,你的代码就不起作用了。没错,下面的帖子可能更符合你的要求。我有点困惑。WCF返回的是JSON数组格式的字符串还是字符串的实际数组?如果是数组,为什么不迭代每个数组元素,去掉索引和d对结果字符串运行JSON反序列化函数?是的,就是这样,发布后不久,我意识到这比需要的更困难。
string[] element_strings = JSON.deserialize(WCF_string_result);
object[] elements = new object[element_strings.length];
for(int x = 0; x < elements.length; x++)
{
    int pipeIndex = element_strings.indexOf("|");
    elements[x] = JSON.deserialize(element_strings[x].substr(pipeIndex + 1));
}