首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >android中的JSON解析:没有x错误的值

android中的JSON解析:没有x错误的值
EN

Stack Overflow用户
提问于 2012-06-08 18:22:39
回答 2查看 6.1K关注 0票数 2

下面是我在AsyncTask中使用的代码

代码语言:javascript
复制
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet request = new HttpGet(url);    
request.setHeader("Accept", "application/json");
request.setHeader("Content-type", "application/json");

HttpResponse response = httpClient.execute(request);

HttpEntity responseEntity = response.getEntity();

char[] buffer = new char[(int)responseEntity.getContentLength()];
    InputStream stream = responseEntity.getContent();
    InputStreamReader reader = new InputStreamReader(stream);
    reader.read(buffer);
    stream.close();

    result = new String(buffer);
    return result;

这将返回一个字符串结果,在我的onPostExecute方法中,我尝试解析该输入字符串:

代码语言:javascript
复制
JSONObject vehicle = new JSONObject(new String(result));
makeEdit.setText(vehicle.getString("make"));
plateEdit.setText(vehicle.getString("plate"));
modelEdit.setText(vehicle.getString("model"));
yearEdit.setText(vehicle.getString("year"));

一旦它到达makeEdit.setText,它就会抛出一个错误-- make没有值。我仍然是android的新手,所以如果有一些明显的错误,请不要发送死亡威胁。输入文本为以下JSON字符串:

代码语言:javascript
复制
{"GetJSONObjectResult":{"make":"Ford","model":"Focus","plate":"XXO123GP","year":2006}}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-08 18:25:47

在处理JSON时,No value for x error消息非常常见。这通常是由被忽视的代码造成的。

通常,当执行JSON时,我会首先尝试查看人类可读的结构。为此,我通常使用JSONViewer

在您的例子中,结构是这样的:

您可以看到,make位于另一个名为GetJSONObjectResult的对象中。因此,要获取它,必须首先获取容器对象:

代码语言:javascript
复制
JSONObject vehicle = ((JSONObject)new JSONObject(result)).getJSONObject("GetJSONObjectResult");
//a more easy to read
JSONObject container = new JSONObject(result);
JSONObject vehicle = container.getJSONObject("GetJSONObjectResult");

并最终使用该对象获取make

代码语言:javascript
复制
makeEdit.setText(vehicle.getString("make"));
plateEdit.setText(vehicle.getString("plate"));
modelEdit.setText(vehicle.getString("model"));
yearEdit.setText(vehicle.getString("year"));
票数 9
EN

Stack Overflow用户

发布于 2012-06-08 18:26:46

您的JSON对象本身包含一个JSONObject。要访问您的数据,您必须这样做:

代码语言:javascript
复制
vehicle.getJSONObject("GetJSONObjectResult").getString("make");
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10947065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档