代码之家  ›  专栏  ›  技术社区  ›  smatthewenglish

在从字符串转换之后,在Java中对json子数组进行细粒度索引

  •  0
  • smatthewenglish  · 技术社区  · 6 年前

    此过程从服务器发送的消息开始,该消息将变成字符串,最初看起来如下所示:

    /713.105.135.149:54969: [{"row 0":[{},{},{},{},{},{},{},{}]},{"row 1":[{},{},{},{},{},{},{},{}]},{"row 2":[{},{},{},{},{},{},{},{}]},{"row 3":[{},{},{},{},{},{},{},{}]},{"row 4":[{},{},{},{},{},{},{},{}]},{"row 5":[{"column 0":"WhitePawn"},{},{},{},{},{},{},{}]},{"row 6":[{},{},{},{},{},{},{},{}]},{"row 7":[{},{},{},{},{},{},{},{}]}]
    

    message.substring(message.indexOf("["));

    接下来,我使用以下代码将其转换为JSONarray JSONArray jsonArray = new JSONArray(trimmed);

    随后,我想索引到它,我可以这样做 jsonArray.get(4);

    {"row 4":[{"column 0":"WhitePawn"},{},{},{},{},{},{},{}]} ,而我真正想要的是 WhitePawn .

    jsonArray.get(4) JSONObject ,而我认为我需要/想要的是另一个 JSONArray ,这样我可以再次索引到它,类似 JSONArray subArray = jsonArray.get(0);

    返回,或被投到,我可以再次索引到的东西?

        private void parseMessageRedrawBoard(String message) throws Exception {
    
            Log.d("0000: ", message);
    
            String trimmed = message.substring(message.indexOf("["));
    
            Log.d("1111: ", trimmed);
    
            JSONArray jsonArray = new JSONArray(trimmed);
    
            //"column 0"
    
            Object subArray = jsonArray.get(4);
    
            Log.d("YES: ", subArray.toString());
        }
    
    1 回复  |  直到 6 年前
        1
  •  -1
  •   smatthewenglish    6 年前

    剧透 JSONArray subArray = jsonArray.getJSONArray(4); 没用,RTFM就这么多了!

        private void parseMessageRedrawBoard(String message) throws Exception {
    
            Log.d("0000: ", message);
    
            String trimmed = message.substring(message.indexOf("["));
    
            Log.d("1111: ", trimmed);
    
            JSONArray jsonArray = new JSONArray(trimmed);
    
            //"column 0"
    
            JSONObject subObject = jsonArray.getJSONObject(4);
    
            JSONArray result = subObject.getJSONArray("row 4");
    
            Log.d("YES: ", result.get(0).toString());
        }
    

    谢谢@Andreas的提示!