使用REST生成列表以生成JSON响应时出错

时间:2013-03-19 12:31:06

标签: json web-services rest

我正在尝试使用Android中的Json列表。但是,我认为我没有很好地生成列表,当我尝试用Json解析时,我得到了错误。

我得到了这个结果:

[{ “ID”:7, “字”: “W6”, “定义”: “D6”, “语言”: “ES”, “numberDefinition”:0, “成功”:假},{”标识 “:8中,” 词 “:” W7 \ n”, “定义”: “D7”, “语言”: “ES”, “numberDefinition”:0, “成功”:假},{ “ID”:9 “字”: “W8”, “定义”: “D8”, “语言”: “ES”, “numberDefinition”:0, “成功”:假}]

@GET
@Path("words")
@Produces(MediaType.APPLICATION_JSON)
public List<Word> getWords(@QueryParam("number") int number  ) {
    List<Word> list = null;

    list = dictionary.getListWords(number);

    return list;
}

我在Android上的java代码是:

            respJSON = new JSONObject(response);
            JSONArray lineItems = respJSON.getJSONArray("words");
            listWords = new ArrayList<Word>();

            for(int i=0; i<lineItems.length(); i++)
            {               
                JSONObject obj = lineItems.getJSONObject(i);                
                id = obj.getInt(ConstantsTrivial.WORD_ID);
                definition = obj.getString(ConstantsTrivial.WORD_DEFINITION);
                language = obj.getString(ConstantsTrivial.WORD_LANGUAGE);
                wordName = obj.getString(ConstantsTrivial.WORD_NAME);
                numberDefinition = obj.getInt(ConstantsTrivial.WORD_NUMBER_DEFINITION);
                word = new Word(id, wordName, definition, language, numberDefinition);

                listWords.add(word);
            }

我正在寻找一个“单词”,我知道这个错误,但我不知道我应该做什么,以便我的webservice以正确的方式生成列表..

错误是:

03-19 13:09:48.086:E / WebServiceTask(9868):值[{“numberDefinition”:0,“id”:1,“word”:“w0”,“language”:“ES”, “定义”: “D0”, “成功”:假},{ “numberDefinition”:0, “ID”:3, “字”: “W2”, “语言”: “ES”, “定义”:“D2 ”, “成功”:假},{ “numberDefinition”:0, “ID”:4, “字”: “W3”, “语言”: “ES”, “定义”: “D3”, “成功”: false},{“numberDefinition”:0,“id”:9,“word”:“w8”,“language”:“es”,“definition”:“d8”,“success”:false}]类型org .json.JSONArray无法转换为JSONObject

谢谢。

1 个答案:

答案 0 :(得分:0)

错误位于代码的第一行。您的值是JSONArray,而不是JSONObject。该行应该是:

JSONArray lineItems = new JSONArray(response);

不要忘记删除第二行。