我的Android应用程序期望使用以下Java从我的WCF服务中获取用户名数组,然后填充一个微调器。
JSONArray mtUsers = new JSONArray(new String(buffer));
但它似乎得到一个JSONObject,因为我得到以下错误,
Android JSONObject cannot be converted to JSONArray
返回的JSON看起来像这样,
{"GetUserNamesResult":[{"UserName":"Peyton"},{"UserName":"Drew"},{"UserName":"Brett"}]}
这是我服务中的代码,
接口:
[OperationContract]
[WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "GetUserNames")]
IList<UserNames> GetUserNames();
上课:
public IList<UserNames> GetUserNames()
{
IList<UserNames> lstusernames = new List<UserNames>();
var usernames = from p in _db.Users
select p;
foreach (User singleUsernames in usernames)
{
UserNames a = new UserNames();
a.UserName = singleUsernames.UserName;
lstusernames.Add(a);
}
return lstusernames;
}
JSON应该是什么样的,任何人都可以看到我做错了什么?
而不是在黑暗中试图返回字符串或字符串[],我以为我会问你们和gals。
干杯,
麦克
答案 0 :(得分:9)
实际上你得到的是jsonObject,第一个键“GetUserNamesResult”的值是JSONArray。
这样做..
JSONObject jsonResponse = new JSONObject(new String(buffer));
JSONArray mtUsers = jsonResponse.getJSONArray("GetUserNamesResult");