【发布时间】:2014-08-15 05:32:43
【问题描述】:
我要做的是来自服务器的fetch艺术家值,以便我可以将数据与基本网址结合起来。
我已经将InputStream 转换为String,但我认为将json String 转换为HashMap 时遇到了一些问题。我被这个问题困扰了 2 周...... :(
这是来自服务器的结果。 (字符串输入)
{"musicInfo": [{"music_id":"4","artists":"Gummy","file_name":"Thinkaboutme","jacket_thumbnail":"thThink","jacket_name":"oriThink","is_on_server":"1","is_liked":"0","created":"2014-08-11 20:00:17"},{"music_id":"3","artists":"Beenzino","file_name":"Aquaman","jacket_thumbnail":"thAquaman","jacket_name":"oriAquaman","is_on_server":"1","is_liked":"0","created":"2014-08-11 19:59:31"},{"music_id":"2","artists":"BrunoMars","file_name":"Justthewayyouare","jacket_thumbnail":"thJustTheWayYouAre","jacket_name":"oriJustTheWayYouAre","is_on_server":"1","is_liked":"0","created":"2014-08-11 19:58:21"},{"music_id":"1","artists":"BrunoMars","file_name":"Grenade","jacket_thumbnail":"thGrenade","jacket_name":"oriGrenade","is_on_server":"1","is_liked":"0","created":"2014-08-11 19:56:51"}]}
编辑器格式化的 JSON:
{ "musicInfo": [ { "music_id": "4", "artists": "Gummy", "file_name": "Thinkaboutme", "jacket_thumbnail": "thThink", "jacket_name": "oriThink", "is_on_server": "1", "is_liked": "0", "created": "2014-08-11 20:00:17" }, { "music_id": "3", "artists": "Beenzino", "file_name": "Aquaman", "jacket_thumbnail": "thAquaman", "jacket_name": "oriAquaman", "is_on_server": "1", "is_liked": "0", "created": "2014-08-11 19:59:31" }, { "music_id": "2", "artists": "BrunoMars", "file_name": "Justthewayyouare", "jacket_thumbnail": "thJustTheWayYouAre", "jacket_name": "oriJustTheWayYouAre", "is_on_server": "1", "is_liked": "0", "created": "2014-08-11 19:58:21" }, { "music_id": "1", "artists": "BrunoMars", "file_name": "Grenade", "jacket_thumbnail": "thGrenade", "jacket_name": "oriGrenade", "is_on_server": "1", "is_liked": "0", "created": "2014-08-11 19:56:51" } ] }
MainActivity.java:
private String getMusicInfo(String url) {
InputStream inputStream = null;
String inputStr = "";
HashMap<String, String> map = new HashMap<String, String>();
try {
URL getMusicUrl = new URL(url);
conn = (HttpURLConnection) getMusicUrl.openConnection();
conn.setDoInput(true);
conn.connect();
Log.d(TAGCP, "MADE POST REQUEST TO THE GIVEN URL");
inputStream = conn.getInputStream();
if (inputStream != null) {
inputStr = Util.convertInputStreamToString(inputStream);
Log.i(TAGCS, inputStr);
JSONParser jsonParser = new JSONParser();
JSONObject jsonObject = (JSONObject) jsonParser.parse(inputStr);
String artistsName = (String) jsonObject.get("artists");
// Debug: artistsName == null... what is happening!!?
System.out.println(artistsName);
} else {
inputStr = "Did not work!";
Log.d(TAGRR, inputStr);
}
} catch(Exception e) {
Log.i("InputStream", e.getLocalizedMessage());
}
return inputStr;
}
【问题讨论】:
-
请指定哈希映射应该包含什么,预期的键是什么,预期的值是什么?目前它只有一个带有密钥
musicInfo的条目 -
在下次发布之前自己格式化您的代码。
-
很抱歉我还没有考虑到这一点...:(
-
hashmap 应该包含 music_id、artists、file_name、jacket_thumbnail..
-
您的
JSON是来自org.json还是org.json.simple?