Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.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 从domino access服务中删除方括号_Java_Json_Rest_Xpages - Fatal编程技术网

Java 从domino access服务中删除方括号

Java 从domino access服务中删除方括号,java,json,rest,xpages,Java,Json,Rest,Xpages,我想通过dominoaccessservices(DAS)作为java中的REST提供者来访问Domino数据 String url = "http://malin1/fakenames.nsf/api/data/collections/name/groups"; ObjectMapper mapper = new ObjectMapper(); JsonFactory factory = new JsonFactory(); JsonParser parser = factory.create

我想通过dominoaccessservices(DAS)作为java中的REST提供者来访问Domino数据

String url = "http://malin1/fakenames.nsf/api/data/collections/name/groups";
ObjectMapper mapper = new ObjectMapper();
JsonFactory factory = new JsonFactory();
JsonParser parser = factory.createParser(new URL(url));
JsonNode rootNode = mapper.readTree(parser);
但是,我注意到DAS将JSON绑定在方括号中:

[
  {
      "@entryid":"1-D68BB54DEA77AC8085256B700078923E",
      "@unid":"D68BB54DEA77AC8085256B700078923E",
      "@noteid":"1182",
      "@position":"1",
      "@read":true,
      "@siblings":3,
      "@form":"Group",
      "name":"LocalDomainAdmins",
      "description":"This group should contain all Domino administrators in your domain. Most system databases and templates give people in this group Manager access."
  },
 {
      "@entryid":"3-9E6EABBF405A1A9985256B020060E64E",
      "@unid":"9E6EABBF405A1A9985256B020060E64E",
      "@noteid":"F46",
      "@position":"3",
      "@read":true,
      "@siblings":3,
      "@form":"Group",
      "name":"OtherDomainServers",
      "description":"You should add all Domino servers in other domains with which you commonly replicate to this group."
  }
]

我怎样才能轻松地去掉这些括号?

如前所述,您应该让它们完好无损。例如,可以使用Jackson解析JSON数组

请在下面查找示例代码段

import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.JsonProcessingException;
import org.codehaus.jackson.map.ObjectMapper;
...

String response = ... your posted string
ObjectMapper mapper = new ObjectMapper();
try {
    JsonNode taskIdsjsonNode = mapper.readTree(response);
    for (JsonNode next : taskIdsjsonNode) {
        System.out.printf("%s: %s%n", "@entryid", next.get("@entryid"));
        System.out.printf("%s: %s%n", "name", next.get("name"));
    }
} catch (.... ) {
    // your exception handling goes here
}
输出

@entryid: "1-D68BB54DEA77AC8085256B700078923E"
name: "LocalDomainAdmins"
@entryid: "3-9E6EABBF405A1A9985256B020060E64E"
name: "OtherDomainServers"

括号不是难看的,而是正确的符号。要访问内容,只需在客户端脚本中使用[0],或使用您喜欢的Java JSON解析器即可。

这里的解释可能会有所帮助:

基本上,通过Jersey客户端建立对DAS的调用,然后通过Jackson库将json解析为java中的映射

在解析过程中,您可以定义要解析和转换的值


看看Person类…

我猜方括号代表数组?我还不太熟悉JSON。根据在线验证器,这是有效的JSON。去掉方括号会破坏它。@Abhinav如果你不确定,猜测只会让你更加困惑。然而,在这种情况下,你是正确的。方括号表示这是一个JSONArray,每个元素都是一个JSONObject
[]
表示对象的集合/数组。如果删除它们,则会使结构无效,而且使用JSON解析器很难将其解析回对象。如何处理JSON?为什么括号会打扰你?你是说我应该先获取数据,例如通过
InputStream is=newurl(URL.openStream()?还是推广另一种方法?@Malin我将
String
作为输入,只是为了保持示例的简单性。在修改后的示例中,您直接从URL读取它。从我的观点来看,没有首选的最佳输入方式。选择一个能以最可靠的方式解决问题的方法。你是说我应该先获取数据,然后修改它,例如通过
InputStream is=newurl(URL).openStream()?还是推广另一种方法?