gpt4 book ai didi

java - 我应该怎么做才能解决这个错误?

转载 作者:行者123 更新时间:2023-12-02 07:37:26 24 4
gpt4 key购买 nike

我使用 JSONParser 来获取搜索结果,为此我遵循了本教程:http://www.androidhive.info/2012/01/android-json-parsing-tutorial/

问题是,我使用的 API 给出的结果如下:

{"response":[50036,{"aid":88131498,"owner_id":61775052,"artist":"Terror Squad","title":"Lean Back (OST Need For Speed Underground 2)","duration":249,"url":"http:\/\/cs4408.vkontakte.ru\/u59557424\/audio\/7f70f58bb9b8.mp3","lyrics_id":"3620730"},{"aid":106963458,"owner_id":-24764574,"artist":"«Dr. Dre ft Eminem, Skylar Grey (Assault Terror)","title":"I Need A Doctor (ASSAULT TERROR DUBSTEP REMIX)»","duration":240,"url":"http:\/\/cs5101.vkontakte.ru\/u79237547\/audio\/12cd12c7f8c2.mp3","lyrics_id":"10876670"}]}

当我必须解析第一个整数(这里是 50036)时,我的问题就出现了,它是找到的结果数。

我不知道如何读取该整数。

这是我的代码:

private void instance(String artisttrack){
// Creating JSON Parser instance
JSONParser jParser = new JSONParser();

// getting JSON string from URL
String jsonurl = new String( "https://api.vk.com/method/audio.search?access_token=ACC_TOKEN&api_id=ID&sig=SIG&v=2.0&q=" + artistname + artisttrack + "&count=5");
JSONObject json = jParser.getJSONFromUrl(jsonurl);

try {
// Getting Array of Contacts
response = json.getJSONArray(TAG_RESPONSE);

// looping through All Contacts
for(int i = 0; i < response.length(); i++){
JSONObject c = response.getJSONObject(i);

// Storing each json item in variable
//int results = Integer.parseInt(c.getString(TAG_RESULTS));
String aid = c.getString(TAG_AID);
String owner_id = c.getString(TAG_OWNER_ID);
String artist = c.getString(TAG_ARTIST);
String title = c.getString(TAG_TITLE);
String duration = c.getString(TAG_DURATION);

// Phone number is agin JSON Object
//JSONObject phone = c.getJSONObject(TAG_PHONE);
String url = c.getString(TAG_URL);
String lyrics_id = c.getString(TAG_LYRICS_ID);
Log.e("áaaaaaaaaaaaaaa", url);

}
} catch (JSONException e) {
e.printStackTrace();
}

}

JSONParser.java 就像教程中写的那样。

这里有两行 logcat 错误:

W/System.err(10350): org.json.JSONException: Value 50036 at 0 of type java.lang.Integer cannot be converted to JSONObject
W/System.err(10350): at org.json.JSON.typeMismatch(JSON.java:100)

最佳答案

您的 JSON 示例组织结果的方式很差:将数字与结果对象混合在一起。这个数字应该表示数组中对象的数量还是其他什么?

如果你可以假设这个数字永远是第一个元素,并且根据this那么它应该以这种方式工作,您可以尝试读取循环外数组的第一个值:

response = json.getJSONArray(TAG_RESPONSE);

// from your example, num will be 50036:
num = response.getInt(0);

for (int i = 1; i < response.length(); i++){
JSONObject c = response.getJSONObject(i);

请注意,链接文档中的示例将此数字作为字符串:

{"response":
["5",
{"aid":"60830458","owner_id":"6492","artist":"Noname","title":"Bosco",
"duration":"195","url":"http:\/\/cs40.vkontakte.ru\/u06492\/audio\/2ce49d2b88.mp3"},
{"aid":"59317035","owner_id":"6492","artist":"Mestre Barrao","title":"Sinhazinha",
"duration":"234","url":"http:\/\/cs510.vkontakte.ru\/u2082836\/audio\/
d100f76cb84e.mp3"}]}

但是 JSONArray.getInt() 会将 String 解析为 int

请注意,数组中对象中的某些值也是数字,您可能还希望将它们读取为 int:

int aid = c.getInt(TAG_AID);
int owner_id = c.getInt(TAG_OWNER_ID);
int duration = c.getInt(TAG_DURATION);

关于java - 我应该怎么做才能解决这个错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11991971/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com