http://api.pathofexile.com/ladders/Default?offset=0&limit=1にある JSON を解析しようとしています。
{
"total": 15000,
"entries": [
{
"online": false,
"rank": 1,
"character": {
"name": "Byrr",
"level": 85,
"class": "Shadow",
"experience": 1397076236
},
"account": {
"name": "Canoobians"
}
}
]
}
「オンライン」要素と「ランク」要素を取得するように変更しようとしている間、私はandroidhiveチュートリアルに従ってきました。(最終的には多数のエントリを持つすべての要素が必要ですが、物事を理解しようとするために、この 2 つだけから始めています。
public class AndroidJSONParsingActivity extends ListActivity {
// url to make request
private static String url = "http://api.pathofexile.com/ladders/Default?offset=0&limit=2";
// JSON node names
private static final String TAG_ENTRIES = "entries";
private static final String TAG_ONLINE = "online";
private static final String TAG_RANK = "rank";
// entries JSONArray
JSONArray entries = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Hashmap for ListView
ArrayList<HashMap<String, String>> entriesList = new ArrayList<HashMap<String, String>>();
// create JSON Parser instance
JSONParser jParser = new JSONParser();
// getting JSON string from url
JSONObject json = jParser.getJSONFromUrl(url);
try {
// Getting Array of entries
entries = json.getJSONArray(TAG_ENTRIES);
// looping through entries
for (int i = 0; i < entries.length(); i++) {
JSONObject ent = entries.getJSONObject(i);
// storing each JSON item in a variable
String online = ent.getString(TAG_ONLINE);
String rank = ent.getString(TAG_RANK);
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
// adding each child node to HashMap key => value
map.put(TAG_ONLINE, online);
map.put(TAG_RANK, rank);
// adding HashList to ArrayList
entriesList.add(map);
}
} catch (JSONException e) {
e.printStackTrace();
}
// Updating parsed JSON data into ListView
ListAdapter adapter = new SimpleAdapter(this, entriesList, R.layout.list_item, new String[] { TAG_ONLINE, TAG_RANK }, new int[] { R.id.online, R.id.rank });
setListAdapter(adapter);
私の JSONParser() クラスはチュートリアルと同じです。プログラムを実行すると、次のエラーが表示されます。
Error parsing data org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject.
JSONはJSONLintに従って有効であるため、このエラーが発生する理由がわかりません。したがって、HTMLを送信するべきではありませんよね?私が見逃しているもの、またはJSONを抽出するための完全に異なる/より良い方法はありますか? 正しい方向へのキックは大歓迎です。
編集:私は新しいユーザーなので、まだ自己回答することはできませんが、以前は見たことがなく、問題を解決するのではなく使用NullPointerException
していたことがわかりました。JSONParser()
HttpGet()
HttpPost()
ありがとう。