Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android JSON解析器_Java_Android_Json - Fatal编程技术网

Java Android JSON解析器

Java Android JSON解析器,java,android,json,Java,Android,Json,我正在尝试解析位于的JSON { “总数”:15 000, “条目”:[ { “在线”:假, “排名”:1, “字符”:{ “名称”:“Byrr”, “级别”:85, “类”:“影子”, “经验”:1397076236 }, “账户”:{ “姓名”:“卡诺比亚人” } } ] } 我一直在遵循,同时试图修改它以检索“online”和“rank”元素。(最终,我希望所有元素都有大量的条目,但我只是从这两个元素开始,试图理解一些东西 公共类AndroidJSONParsingActivity扩展了

我正在尝试解析位于的JSON

{
“总数”:15 000,
“条目”:[
{
“在线”:假,
“排名”:1,
“字符”:{
“名称”:“Byrr”,
“级别”:85,
“类”:“影子”,
“经验”:1397076236
},
“账户”:{
“姓名”:“卡诺比亚人”
}
}
]
}
我一直在遵循,同时试图修改它以检索“online”和“rank”元素。(最终,我希望所有元素都有大量的条目,但我只是从这两个元素开始,试图理解一些东西

公共类AndroidJSONParsingActivity扩展了ListActivity{
//发出请求的url
专用静态字符串url=”http://api.pathofexile.com/ladders/Default?offset=0&limit=2";
//JSON节点名称
私有静态最终字符串标记_ENTRIES=“ENTRIES”;
私有静态最终字符串标记_ONLINE=“ONLINE”;
私有静态最终字符串标记_RANK=“RANK”;
//JSONArray条目
JSONArray条目=null;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//ListView的Hashmap
ArrayList entriesList=新的ArrayList();
//创建JSON解析器实例
JSONParser jParser=新的JSONParser();
//从url获取JSON字符串
JSONObject json=jParser.getJSONFromUrl(url);
试一试{
//获取条目数组
entries=json.getJSONArray(TAG_条目);
//循环浏览条目
对于(int i=0;ivalue
地图放置(标签在线,在线);
地图放置(标记等级,等级);
//将哈希列表添加到ArrayList
entriesList.add(地图);
}
}捕获(JSONException e){
e、 printStackTrace();
}
//将解析的JSON数据更新到ListView中
ListAdapter=new SimpleAdapter(this,entriesList,R.layout.list_项,新字符串[]{TAG_ONLINE,TAG_RANK},新int[]{R.id.ONLINE,R.id.RANK});
setListAdapter(适配器);
我的JSONParser()类与教程中的相同。现在,当我运行程序时,我得到错误:


解析数据org.json.JSONException:Value时出错查看JSONParser中的这一行

  BufferedReader reader = new BufferedReader(new InputStreamReader(
                        is, "iso-8859-1"), 8);
站点返回此标题

Content-Type: text/html; charset=UTF-8

您必须在BufferedReader中将iso-8859-1更改为UTF-8。

结果表明,我在
JSONParser()
中得到了一个我以前没有看到的
NullPointerException
,并使用
HttpGet()
而不是
HttpPost()
解决了我的问题。

我完全支持学习编写语法分析器,但我已经检查了一些现有的JSON语法分析器是否适合这份工作?我最喜欢的一直是GSON,并且在我的Android项目中为我提供了很好的服务。这至少少了一件需要维护的事情。也许你应该指出你的错误所在??谢谢,但androidhive站点使用的是UTF-8,而不是我试图解析的JSON,它是iso-8859-1。更改它确实会导致我注意到一个以前没有看到的NullPointerException。在JSONParser中将HttpPost更改为HttpGet修复了所有问题,但我不完全确定这是为什么。