Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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
android api json解析器_Android_Json_Nullpointerexception_Jsonparser - Fatal编程技术网

android api json解析器

android api json解析器,android,json,nullpointerexception,jsonparser,Android,Json,Nullpointerexception,Jsonparser,嗨,我有一个应用程序显示了Twitch.tv的在线流光,数据来自我发送的请求,但我无法解析它们这是我的代码 public ArrayList<Twitch> ParseTwitch(JSONArray object, Context context){ ArrayList<Twitch> chanels = new ArrayList<>(); try { for (int i = 0;i<object.length();i++){

嗨,我有一个应用程序显示了Twitch.tv的在线流光,数据来自我发送的请求,但我无法解析它们这是我的代码

 public ArrayList<Twitch> ParseTwitch(JSONArray object, Context context){
ArrayList<Twitch> chanels = new ArrayList<>();
try {
    for (int i = 0;i<object.length();i++){
        JSONObject streamObjct = object.getJSONObject(i);
        JSONObject chanel = streamObjct.getJSONObject("channel");
        JSONObject url= streamObjct.getJSONObject("preview");
        final Twitch twitch = new Twitch();
        twitch.setName(chanel.getString(CHANEL_NAME));
        twitch.setStatus(chanel.getString(CHANEL_STATUS));
        twitch.setGame(streamObjct.getString(GAME));
        twitch.setLanguage(chanel.getString(BROADCASTER_LANGUAGE));
        twitch.setViewrs(streamObjct.getInt(VIEWRS));
        String imageUrl = url.getString("medium");
        ImageRequest request  =new ImageRequest(imageUrl, new Response.Listener<Bitmap>() {
            @Override
            public void onResponse(Bitmap response) {
                twitch.setLogo(response);
            }
        }, 0, 0, null, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        });
        RequestQueue quew = Volley.newRequestQueue(context);
        quew.add(request);
        chanels.add(twitch);
    }
    return chanels;
}catch (JSONException e){
    e.printStackTrace();
}

return chanels;
}

我解决了这个问题,这是完整的代码

public class TwitchFragment extends Fragment {



@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View view=inflater.inflate(R.layout.twitch_main, container, false);
    String url="http://192.168.1.101/mySite/Flowers/flowers2.json";
    ListView mListView = (ListView) view.findViewById(R.id.twitch_last);
    prepareData(url,mListView);
    return view;
}
private void prepareData(String url, final ListView mListView) {

    JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            try {
                JSONArray stream = response.getJSONArray("streams");
                TwitchApiParser parser = new TwitchApiParser();
                ArrayList items= parser.ParseTwitch(stream,getActivity().getApplicationContext());
                TwitchAdapter adapter = new TwitchAdapter(getContext(),
                        R.layout.twitch,items);
                mListView.setAdapter(adapter);
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Toast.makeText(getContext(), "Ridi Bro", Toast.LENGTH_SHORT).show();
        }
    });
    RequestQueue quew = Volley.newRequestQueue(getActivity().getApplicationContext());
    quew.add(request);
}
公共类TwitchFragment扩展片段{
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图=充气机。充气(R.layout.twitch_main,容器,错误);
字符串url=”http://192.168.1.101/mySite/Flowers/flowers2.json";
ListView mListView=(ListView)view.findViewById(R.id.twitch_last);
prepareData(url,mListView);
返回视图;
}
私有void prepareData(字符串url,最终列表视图mListView){
JsonObjectRequest=newJSONObjectRequest(request.Method.GET,url,null,new Response.Listener()){
@凌驾
公共void onResponse(JSONObject响应){
试一试{
JSONArray stream=response.getJSONArray(“streams”);
TwitchApiParser=新TwitchApiParser();
ArrayList items=parser.ParseTwitch(流,getActivity().getApplicationContext());
TwitchAdapter adapter=新TwitchAdapter(getContext(),
R.布局、抽搐、项目);
mListView.setAdapter(适配器);
}捕获(JSONException e){
e、 printStackTrace();
}
}
},new Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
Toast.makeText(getContext(),“Ridi Bro”,Toast.LENGTH_SHORT.show();
}
});
RequestQueue quew=Volley.newRequestQueue(getActivity().getApplicationContext());
补充(请求);
}
和解析器

public class TwitchApiParser {
private final String CHANEL_NAME="display_name";
private final String GAME="game";
private final String CHANEL_STATUS = "status";
private final String BROADCASTER_LANGUAGE = "broadcaster_language";
private final String VIEWRS = "viewers";
public ArrayList<Twitch> ParseTwitch(JSONArray object, Context context){
ArrayList<Twitch> chanels = new ArrayList<>();
try {
    for (int i = 0;i<object.length();i++){
        JSONObject streamObjct = object.getJSONObject(i);
        JSONObject chanel = streamObjct.getJSONObject("channel");
        JSONObject url= streamObjct.getJSONObject("preview");
        final Twitch twitch = new Twitch();
        twitch.setName(chanel.getString(CHANEL_NAME));
        twitch.setStatus(chanel.getString(CHANEL_STATUS));
        twitch.setGame(streamObjct.getString(GAME));
        twitch.setLanguage(chanel.getString(BROADCASTER_LANGUAGE));
        twitch.setViewrs(streamObjct.getInt(VIEWRS));
        String imageUrl = url.getString("medium");
        ImageRequest request  =new ImageRequest(imageUrl, new Response.Listener<Bitmap>() {
            @Override
            public void onResponse(Bitmap response) {
                twitch.setLogo(response);
            }
        }, 0, 0, null, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        });
        RequestQueue quew = Volley.newRequestQueue(context);
        quew.add(request);
        chanels.add(twitch);
    }
    return chanels;
}catch (JSONException e){
    e.printStackTrace();
}

return chanels;
}
公共类TwitchApiParser{
私有最终字符串CHANEL_NAME=“display_NAME”;
私人最终字符串游戏=“游戏”;
私人最终字符串CHANEL_STATUS=“STATUS”;
专用最终字符串广播者\ u语言=“广播者\ u语言”;
私有最终字符串viewers=“viewers”;
公共ArrayList ParseTwitch(JSONArray对象,上下文){
ArrayList chanels=新ArrayList();
试一试{

for(int i=0;我“无法解析”没有充分描述问题…错误是什么?稍后再担心SQLite。你在哪里调用
ParseTwitch
?请显示一个,好吗?我现在肯定会编辑我的帖子。你绝对肯定执行了
return chanels;
吗?你是否遗漏了关于你的JSONException的任何其他异常消息?立即要解决这个问题,您确实应该将
returnnull;
更改为
returnchanels;
,但由于JSON解析中出现异常,您似乎得到了一个空列表。
public class TwitchFragment extends Fragment {



@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View view=inflater.inflate(R.layout.twitch_main, container, false);
    String url="http://192.168.1.101/mySite/Flowers/flowers2.json";
    ListView mListView = (ListView) view.findViewById(R.id.twitch_last);
    prepareData(url,mListView);
    return view;
}
private void prepareData(String url, final ListView mListView) {

    JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null, new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            try {
                JSONArray stream = response.getJSONArray("streams");
                TwitchApiParser parser = new TwitchApiParser();
                ArrayList items= parser.ParseTwitch(stream,getActivity().getApplicationContext());
                TwitchAdapter adapter = new TwitchAdapter(getContext(),
                        R.layout.twitch,items);
                mListView.setAdapter(adapter);
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Toast.makeText(getContext(), "Ridi Bro", Toast.LENGTH_SHORT).show();
        }
    });
    RequestQueue quew = Volley.newRequestQueue(getActivity().getApplicationContext());
    quew.add(request);
}
public class TwitchApiParser {
private final String CHANEL_NAME="display_name";
private final String GAME="game";
private final String CHANEL_STATUS = "status";
private final String BROADCASTER_LANGUAGE = "broadcaster_language";
private final String VIEWRS = "viewers";
public ArrayList<Twitch> ParseTwitch(JSONArray object, Context context){
ArrayList<Twitch> chanels = new ArrayList<>();
try {
    for (int i = 0;i<object.length();i++){
        JSONObject streamObjct = object.getJSONObject(i);
        JSONObject chanel = streamObjct.getJSONObject("channel");
        JSONObject url= streamObjct.getJSONObject("preview");
        final Twitch twitch = new Twitch();
        twitch.setName(chanel.getString(CHANEL_NAME));
        twitch.setStatus(chanel.getString(CHANEL_STATUS));
        twitch.setGame(streamObjct.getString(GAME));
        twitch.setLanguage(chanel.getString(BROADCASTER_LANGUAGE));
        twitch.setViewrs(streamObjct.getInt(VIEWRS));
        String imageUrl = url.getString("medium");
        ImageRequest request  =new ImageRequest(imageUrl, new Response.Listener<Bitmap>() {
            @Override
            public void onResponse(Bitmap response) {
                twitch.setLogo(response);
            }
        }, 0, 0, null, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {

            }
        });
        RequestQueue quew = Volley.newRequestQueue(context);
        quew.add(request);
        chanels.add(twitch);
    }
    return chanels;
}catch (JSONException e){
    e.printStackTrace();
}

return chanels;
}