我希望从我的网站JSON url中提取数据,并在textview中只显示一个对象。我能够解析整个JSON数组,但不解析特定对象。
这是网站上的JSON:
{“id”:3,“day”:“a A”,“created_at”:“2013-11-06T12:30:59.023Z”,“updated_at”:“2013-11-06T12:30:59.023 Z“}
正如您所看到的,它非常简单,但基本上我想要的是
“day”:“a A”
并在我的textview中显示为“a A”。到现在为止,我只能拉出整个阵列。
非常感谢您对此或任何解决方案的参考!
提前致谢!
MainActivity类:
公共类MainActivity扩展了Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.parseDay);
TextView textView1 = null;
try {
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try{
JSONObject json=new JSONObject("day");
try {
String day =json.getString("day");
textView1.setText(day);
} catch (JSONException e) {
e.printStackTrace();
}
}
//catch (JSONException e) {
// e.printStackTrace();
//}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
和我的GetMethod:
公共类GetMethod {
public String getInternetData() throws Exception {
BufferedReader in = null;
String data = null;
try {
HttpClient client = new DefaultHttpClient();
URI website = new URI("http://www.xelatechnologies.com/hfdays/show.json");
HttpGet request = new HttpGet();
request.setURI(website);
HttpResponse response = client.execute(request);
in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
StringBuffer sb = new StringBuffer("");
String l = "";
String nl = System.getProperty("line.separator");
while ((l = in.readLine()) !=null) {
sb.append(l + nl);
}
in.close();
data = sb.toString();
return data;
}
finally {
if (in !=null){
try{
in.close();
return data;
}catch (Exception e){
e.printStackTrace();
}
}
}
}
我对JSON解析非常陌生,所以我确定它根本不对。但值得一试!
答案 0 :(得分:0)
{"id":3,"day":" an A","created_at":"2013-11-06T12:30:59.023Z","updated_at":"2013-11-06T12:30:59.023Z"}
从'{'开始,因此它是Object
而不是Array
JSONObject json=new JSONObject("YOUR_JSON_STRING");
try {
String days=json.getString("day");
textview.setText(days);
} catch (JSONException e) {
e.printStackTrace();
}
的编辑:强> 的
TextView textView1;
String response;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.parseDay);
textView1 = (TextView)findViewById(R.id.your_textview_id);//First Initialise TextView
GetMethod method=new GetMethod();
response=method. getInternetData();// Then get the Json response
try{
JSONObject json=new JSONObject(response);
try {
String day =json.getString("day");
textView1.setText(day);
} catch (JSONException e) {
e.printStackTrace();
}
}
catch (JSONException e) {
e.printStackTrace();
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
并且不要忘记在清单文件中添加Internet权限
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
试试这样。
答案 1 :(得分:0)
您发布的JSON是JSONObject。在java中,您可以将该对象放入这样的JSONObject中(您可以使用任何您想要的序列化/反序列化器,许多存在,对于此示例,请尝试使用org.json):
String json = "{\"id\":3,\"day\":\" an A\",\"created_at\":\"2013-11-06T12:30:59.023Z\",\"updated_at\":\"2013-11-06T12:30:59.023Z\"}";
JSONObject jsonObject = new JSONObject(json);
现在您已经创建了一个json对象。接下来,您要在文本视图上设置文本。在这种情况下获得价值的关键是“日”。所以你现在要做的就是在json对象上使用提供的getString(String value)方法。
final String DAY = "day";
String dayValue= "";
try {
value = jsonObject.getString(DAY);
} catch (JSONException e) {
e.printStackTrace();
}
TextView textView = findViewById(R.id.text_view);
textView.setText(dayValue);