2013-03-14 85 views
1

我有一个asp.net WCF其中包含将序列化LINQ结果并返回我这个JSON字符串java.lang.String中不能转化为jsonarray asp.net

"[{\"intPromoter\":1,\"varID\":\"DP900001\",\"varName\":\"Jay Chou\"}]" 

功能,但它看起来像一个从一点就是我学习的JSON不同所以我说“行” 与此代码Android中Java的

text = "{\"rows\":" + text + "}"; 

,它变成了这个样子

{"rows":"[{\"intPromoter\":1,\"varID\":\"DP900001\",\"varName\":\"Jay Chou\"}]"} 

所以当我使用下面的函数来解析成json数组时,它给了我java.lang.string无法转换为jsonarray。所以我不能确定.net中的字符串是否需要在被json读取之前更改为某种格式,或者在没有添加“行”的情况下是否有直接的方式。提前致谢。

JSONObject jObject = new JSONObject(results); 
JSONArray jArray = jObject.getJSONArray("rows"); //This LINE GIVE error, 

for (int i=0; i < jArray.length(); i++) 
{ 
JSONObject oneObject = jArray.getJSONObject(i); 

int intPromoter =Integer.parseInt(oneObject.getString("KEY_intPromoter")); 
String varID = oneObject.getString("KEY_varID"); 
String varName = oneObject.getString("KEY_varName"); 
} 

回答

2

你最后的字符串有括在双引号的数组,这意味着它是一个字符串,而不是一个数组。删除这些,它应该可以正常工作。

E.g.

{"rows":[{"intPromoter":1,"varID":"DP900001","varName":"Jay Chou"}]} 

此外,你应该能够删除需要一个JSONObject完全由直接从服务器从字符串实例化一个JSONArray,例如

JSONArray rows = new JSONArray(json); 

详情参见下列文件:

http://developer.android.com/reference/org/json/JSONArray.html

+0

THX的帮助。只是当json字符串通过序列化程序从asp.net返回时,谁对这件作品感兴趣。我不知道为什么它返回“不”标准的JSON。所以我需要在android java中替换这个字符串来使它工作。 \t \t text = text.replace(“\\\”“,”\“”); \t \t text = text.replace(“\”[“,”[“); \t \t text = text.replace(”] \“”,“]”); – tsohtan 2013-03-14 08:45:08

相关问题