Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.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

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
在JAVA中提取JSON对象的一部分_Java_Json - Fatal编程技术网

在JAVA中提取JSON对象的一部分

在JAVA中提取JSON对象的一部分,java,json,Java,Json,这是一个JSON对象的示例。我想提取它的一部分,并在JAVA的jTable(SWING)中显示这些值。键分别作为表列名和值作为行数据 [ { "_id":{ "date":"xxxxxxxx", "time":"xxxxxxx", "inc":"xxxx" }, "DOCUMENTS":[ { "EName":"John", "eAge

这是一个JSON对象的示例。我想提取它的一部分,并在JAVA的jTable(SWING)中显示这些值。键分别作为表列名和值作为行数据

[
   {
      "_id":{
         "date":"xxxxxxxx",
         "time":"xxxxxxx",
         "inc":"xxxx"
      },
      "DOCUMENTS":[
         {
            "EName":"John",
            "eAge":"25",
            "eAddress":"UK"
         },

         {
            "EName":"Alex",
            "eAge":"24",
            "eAddress":"Australia"
         }
      ]
   }
]
我想提取这部分

      [
         {
            "EName":"John",
            "eAge":"25",
            "eAddress":"UK"
         },
         {
            "EName":"Alex",
            "eAge":"24",
            "eAddress":"Australia"
         }
      ]
我用这种方法得到了答案。这里jsonstring是包含上述数据的字符串

        String[] splits = jsonString.split("DOCUMENTS\":");
        String[] splits2 = splits[1].split("\\}]", 2);
        System.out.println("spilted  :"+splits2[0]);
但它给我的答案是

[{"EName":"John","eAge":"25","eAddress":"UK"}, 
 {"EName":"Alex","eAge":"24","eAddress":"Australia"
它拆下了封闭的方形支架


我怎样才能得到正确的答案?非常感谢您的帮助。

不要使用
split()
,而是使用:

int index= splits[1].indexOf("\\}]");
String result = splits[1].substring(0,index);

请看以下简单教程:

例如:

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;

public class KroplaTest {
    private static final String JSON = "{\"id\":{ "
            + "\"date\":\"xxxxxxxx\","
            + "\"time\":\"xxxxxxx\","
            + "\"inc\":\"xxxx\""
            + "},"
            + "\"documents\":["
            + "{"
            + " \"eName\":\"John\","
            + " \"eAge\":\"25\","
            + " \"eAddress\":\"UK\""
            + "},"
            + "{"
            + " \"eName\":\"Alex\","
            + " \"eAge\":\"24\","
            + " \"eAddress\":\"Australia\""
            + "} ]} ";

    public static void main(String[] args) {
        final ObjectMapper mapper = new ObjectMapper();
        try {
            Map<String,Object> map = new HashMap<String,Object>();
            map = mapper.readValue(JSON, new TypeReference<HashMap<String,Object>>(){});
            System.out.println(map.get("documents").toString());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

为什么不使用JSON解析器获取
文档
JSONArray?您可以使用JSONPointer查询:
/0/Documents
它删除了封闭的方括号
-因为您在“}]”上拆分-
split2
@mitespathak。我想删除最后的}]个字符。我怎么做?嗯<代码>int len=split1[1]。长度();字符串ans=split1[1]。子字符串(0,len-3);//假设最后2个字符为]和}
[{eName=John, eAge=25, eAddress=UK}, {eName=Alex, eAge=24, eAddress=Australia}]