JSONObject无法转换为JSONArray

时间:2011-11-05 08:01:55

标签: android wcf json

我的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。

干杯,

麦克

1 个答案:

答案 0 :(得分:9)

实际上你得到的是jsonObject,第一个键“GetUserNamesResult”的值是JSONArray。

这样做..

JSONObject jsonResponse = new JSONObject(new String(buffer));
JSONArray mtUsers = jsonResponse.getJSONArray("GetUserNamesResult");