Java 从URL解析JSON数据时出现问题
我有一个与来自URL的JSON解析数据相关的查询 以下是我的设想: 我有一个类似于URL1的URL,从中获取JSON数据 有这样的数据Java 从URL解析JSON数据时出现问题,java,android,arrays,json,Java,Android,Arrays,Json,我有一个与来自URL的JSON解析数据相关的查询 以下是我的设想: 我有一个类似于URL1的URL,从中获取JSON数据 有这样的数据 { "Eat & Drink":{ "Alfresco":3, "Bars":3, "Brewery":5, "Cafe":0, "Distillery":0, "Family":5, "Fine Dining":0, "Home Delivery":0, "Nightcl
{
"Eat & Drink":{
"Alfresco":3,
"Bars":3,
"Brewery":5,
"Cafe":0,
"Distillery":0,
"Family":5,
"Fine Dining":0,
"Home Delivery":0,
"Nightclubs":2,
"Restaurant":0,
"TakeAway":0,
"Wineries":0}
}
我希望在不传递它的情况下获取键和值字段,因为在这里它在所有位置都是不同的
因此,首先我得到第一个键,如“Alfresco”,使用该键,我们得到该键的值,如“3”package com.example.json\u解析器;
导入java.io.BufferedReader;
导入java.io.IOException;
导入java.io.InputStreamReader;
导入java.net.MalformedURLException;
导入java.net.URL;
导入java.net.URLConnection;
导入java.util.ArrayList;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
导入android.app.Activity;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.AdapterView.OnItemClickListener;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.ListView;
导入android.widget.Toast;
公共课第二次扩展活动{
/**在首次创建活动时调用*/
ArrayList列表项;
ListView lv;
按钮btn;
编辑文本;
束束束;
@SuppressWarnings({“rawtypes”,“unchecked”})
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv=(ListView)findViewById(R.id.lv);
lv.setAdapter(新的ArrayAdapter(this,android.R.layout.simple_list_item_1,android.R.id.text1,this.fetchTwitterPublicTimeline());
}
公共ArrayList fetchTwitterPublicTimeline()
{
listItems=new ArrayList();
试一试{
URL twitter=新URL(
“在此处提及您的URL”);
URLConnection tc=twitter.openConnection();
BufferedReader in=新的BufferedReader(新的InputStreamReader(
tc.getInputStream());
弦线;
而((line=in.readLine())!=null){
JSONArray ja=新JSONArray(线);
对于(int i=0;i
package com.example.json\u解析器;
导入java.io.BufferedReader;
导入java.io.IOException;
导入java.io.InputStreamReader;
导入java.net.MalformedURLException;
导入java.net.URL;
导入java.net.URLConnection;
导入java.util.ArrayList;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
导入android.app.Activity;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.AdapterView.OnItemClickListener;
导入android.widget.ArrayAdapter;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.ListView;
导入android.widget.Toast;
公共课第二次扩展活动{
/**在首次创建活动时调用*/
ArrayList列表项;
ListView lv;
按钮btn;
编辑文本;
束束束;
@SuppressWarnings({“rawtypes”,“unchecked”})
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv=(ListView)findViewById(R.id.lv);
lv.setAdapter(新的ArrayAdapter(this,android.R.layout.simple_list_item_1,android.R.id.text1,this.fetchTwitterPublicTimeline());
}
公共ArrayList fetchTwitterPublicTimeline()
{
listItems=new ArrayList();
试一试{
URL twitter=新URL(
“在此处提及您的URL”);
URLConnection tc=twitter.openConnection();
BufferedReader in=新的BufferedReader(新的InputStreamReader(
tc.getInputStream());
弦线;
而((line=in.readLine())!=null){
JSONArray ja=新JSONArray(线);
对于(int i=0;ipackage com.example.json_parser;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;
public class SECOND extends Activity {
/** Called when the activity is first created. */
ArrayList<String> listItems ;
ListView lv ;
Button btn;
EditText et;
Bundle bunn;
@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView)findViewById(R.id.lv);
lv.setAdapter(new ArrayAdapter(this,android.R.layout.simple_list_item_1,android.R.id.text1, this.fetchTwitterPublicTimeline()));
}
public ArrayList<String> fetchTwitterPublicTimeline()
{
listItems = new ArrayList<String>();
try {
URL twitter = new URL(
"MENTION YOUR URL HERE");
URLConnection tc = twitter.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(
tc.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
JSONArray ja = new JSONArray(line);
for (int i = 0; i < ja.length(); i++) {
try{
JSONObject jo = (JSONObject) ja.get(i);
//listItems.add(jo.getString("PUT YOUR NODE ITEM HERE WHICH U WANNA FETCH")+"\n"+jo.getString("PUT YOUR NODE ITEM HERE WHICH U WANNA FETCH")+"\n"+jo.getString("PUT YOUR NODE ITEM HERE WHICH U WANNA FETCH"));
listItems.add(jo.getString("PUT YOUR NODE ITEM HERE WHICH U WANNA FETCH")+"\n"+jo.getString("0"));
}catch(Exception e){
}
}
}
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1,
int arg2, long arg3) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(),listItems.get(arg2).toString() , Toast.LENGTH_SHORT).show();
}
});
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return listItems;
}
}
try {
JSONObject jsonObject =new JSONObject(response);
Iterator keys = jsonObject.keys();
while(keys.hasNext()) {
String key = (String) keys.next();
Log.d("MainActivity", "key : " + key + " name : " + jsonObject.optString(key));
}
} catch (JSONException e) {
e.printStackTrace();
}