【问题标题】:JSON RPC response to Array AndroidJSON RPC 对 Array Android 的响应
【发布时间】:2018-03-01 23:58:37
【问题描述】:

我设法获得了 json rpc 请求的结果,如下所示:

{"id":1,"jsonrpc":"2.0","re​​sult":{"channels":[{"channel":"Channel A","channelid":2165,"label":"Channel A"},{"channel":"Channel B","channelid":748,"label":"Channel B"} 等

我想将响应解析为一个数组,在该数组中我可以在循环的每次迭代中读取通道、通道 ID 和标签。但没有设法得到它。

任何帮助将不胜感激。

抱歉没有编程经验,都是自学的

json rpc 请求代码:

  String groupchannelsurl = "http://192.168.2.100:8080/jsonrpc?request={\"jsonrpc\": \"2.0\", \"method\": \"PVR.GetChannels\", \"params\": {\"channelgroupid\" : 9,\"properties\":[\"channel\"]}, \"id\": 1 }";
    
        RequestQueue queue = Volley.newRequestQueue(this);  
        JsonObjectRequest getRequest = new JsonObjectRequest(Request.Method.GET, groupchannelsurl, null,
                new Response.Listener<JSONObject>()
                {
                    @Override
                    public void onResponse(JSONObject response) {
                        // display response
                        Log.d("Response", response.toString());
                      

                    }
                },
                new Response.ErrorListener()
                {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Log.d("Error.Response", error.toString());
                    }
                }
        );


        queue.add(getRequest);

【问题讨论】:

    标签: java android json json-rpc


    【解决方案1】:

    如果您遇到困难,Android 开发者文档非常好。

    JSON 对象 - https://developer.android.com/reference/org/json/JSONObject.html

    JSONArray - https://developer.android.com/reference/org/json/JSONArray.html

    @Override
    public void onResponse(JSONObject response) {
        JSONArray channels = response.getJSONObject("result").getJSONArray("channels");
        for (int i = 0; i < channels.length(); i++) {
            JSONObject channel = channels.getJSONObject(i);
            String channelName = channel.getString("channel");
            int channelId = channel.getInt("channelid");
            String channelLabel = channel.getString("label");
            // ...
        }
    }
    

    希望这会有所帮助!

    【讨论】:

    • 太棒了!很高兴我能帮上忙
    【解决方案2】:

    你可以像下面这样解析JSONObject

    private void parseJsonObject(JSONObject responseObject) throws JSONException {
    
        String id = responseObject.getString("id");
    
        JSONArray jsonArray = responseObject.optJSONArray("channels");
        if (jsonArray != null) {
    
            for (int i = 0; i < jsonArray.length(); i++) {
    
                JSONObject arrayObject = (JSONObject) jsonArray.get(i);
    
                String channel = arrayObject.getString("channel");
                String channelId = arrayObject.getString("channelid");
    
    
            }
    
    
        }
    
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-01
      • 2014-06-02
      • 1970-01-01
      • 2017-04-22
      • 2020-01-23
      • 1970-01-01
      相关资源
      最近更新 更多