问题描述
下面是code我用我的AsyncTask
里面 DefaultHttpClient的HttpClient =新DefaultHttpClient();
HTTPGET请求=新HTTPGET(URL);
request.setHeader(接受,应用/ JSON);
request.setHeader(内容类型,应用/ JSON);HTT presponse响应= httpClient.execute(请求);HttpEntity responseEntity = response.getEntity();的char []缓冲区=新的char [(INT)responseEntity.getContentLength()];
InputStream的流= responseEntity.getContent();
InputStreamReader的读者=新的InputStreamReader(流);
reader.read(缓冲液);
stream.close(); 结果=新的String(缓冲);
返回结果;
这会返回一个字符串结果,在我onPostExecute方法我尝试解析输入字符串:
的JSONObject车=新的JSONObject(新的字符串(结果));
makeEdit.setText(vehicle.getString(使));
plateEdit.setText(vehicle.getString(板块));
modelEdit.setText(vehicle.getString(模特));
yearEdit.setText(vehicle.getString(年));
一旦它到达makeEdit.setText它抛出一个错误 - 不作任何价值。我还是很新的到Android,所以如果有一些明显的错误,不发送死亡威胁。输入文本是下面的JSON字符串:
{GetJSONObjectResult:{作:福特,模式:焦点访谈,盘子:XXO123GP,年:2006}}
对于x错误没有价值
使用JSON打交道时的消息是pretty常见。这通常导致被忽视code。
通常情况下,当洞JSON,我试图首先看到的人类可读的结构。对于这一点,我通常使用。
在您的情况下,结构是这样的:
您看到制作
是另一个名为对象中 GetJSONObjectResult
。因此,为了得到它,你首先必须先得到容器对象:
的JSONObject车辆=((JSONObject的)新的JSONObject(结果))getJSONObject(GetJSONObjectResult);
//更容易阅读
JSONObject的集装箱=新的JSONObject(结果);
JSONObject的车辆= container.getJSONObject(GetJSONObjectResult);
和最后使用对象来获取制作
:
makeEdit.setText(vehicle.getString(使));
plateEdit.setText(vehicle.getString(板块));
modelEdit.setText(vehicle.getString(模特));
yearEdit.setText(vehicle.getString(年));
Here is the code I'm using inside my AsyncTask
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;
This returns a string result and in my onPostExecute method I try to parse that input string:
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"));
As soon as it reaches makeEdit.setText it throws an error - no value for make. I'm still very new to android, so don't send death threats if there was some obvious error. The input text is the following JSON string:
{"GetJSONObjectResult":{"make":"Ford","model":"Focus","plate":"XXO123GP","year":2006}}
No value for x error
message is pretty common when dealing with JSON. This usually resulted by overlooked code.
usually, when dong JSON, I try to see the human readable structure first. For that, I usually use JSONViewer.
In your case, the structure is something like this:
You see that make
is within another object called GetJSONObjectResult
. Therefore, to get it, you must first get the container object first:
JSONObject vehicle = ((JSONObject)new JSONObject(result)).getJSONObject("GetJSONObjectResult");
//a more easy to read
JSONObject container = new JSONObject(result);
JSONObject vehicle = container.getJSONObject("GetJSONObjectResult");
and finally use the object to get make
:
makeEdit.setText(vehicle.getString("make"));
plateEdit.setText(vehicle.getString("plate"));
modelEdit.setText(vehicle.getString("model"));
yearEdit.setText(vehicle.getString("year"));
这篇关于JSON解析Android中:对于x错误没有价值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!