簡體   English   中英

Marklogic-使用Java API在json的元素數組中更新

[英]Marklogic - Update within an array of element of a json using java api

可以說我們有json看起來像

{ 
   "name":"abc", 
   "lastName":"xyz", 
   "description":"aaaaa aaaa", 
   "dob":11-10-1988,
   "workInformation":[
       {
          "address":"kolkata", 
          "workFor":"vvv Pvt Ltd",
          "reference" : [
              {
                 "refName" : "ttt",
                 "refId" : "12345"
              },
               {
                 "refName" : "sss",
                 "refId" : "23412"
              }
          ]
       },
        {
          "address":"bangalore", 
          "workFor":"www Pvt Ltd",
          "reference" : [
              {
                 "refName" : "rrr",
                 "refId" : "43434"
              },
               {
                 "refName" : "yyyy",
                 "refId" : "34213"
              }
          ]
       },
       {
          "address":"delhi", 
          "workFor":"sss Pvt Ltd",
          "reference" : [
              {
                 "refName" : "qqqq",
                 "refId" : "76767"
              },
               {
                 "refName" : "gggg",
                 "refId" : "65432"
              }
          ]
       }
    ]
}

我嘗試了DocumentPatchBuilder的insertFragment。 使用此,我能夠在json屬性之前/之后進行更新。 但是我必須在數組類型的屬性workInformation中插入。 這是我嘗試過的insertFragment示例-

 DocumentPatchBuilder pb = docMgr.newPatchBuilder();
 pb.pathLanguage(DocumentPatchBuilder.PathLanguage.JSONPATH);
 ObjectMapper mapper = new ObjectMapper();
 pb.insertFragment("workInformation", Position.BEFORE,mapper.createObjectNode().put("hello", "hai"));

我想使用Java api將以下提到的數據插入到workInformation部分中-

   {
          "address":"Mumbai", 
          "workFor":"zzz Pvt Ltd"
   }

請讓我知道該怎么做。

謝謝閱讀。

要插入workInformation數組內,您需要將位置指定為POSITION.LAST_CHILD才能將其插入到上下文的子級列表的最后一個子級中。 另外,您需要在patchBuilder.insertFragment的第一個參數-[“ workInformation”]中將“ workInformation”指定為數組類型。 該代碼將類似於:

DocumentPatchBuilder pb = docMgr.newPatchBuilder();
pb.pathLanguage(DocumentPatchBuilder.PathLanguage.JSONPATH);
ObjectMapper mapper = new ObjectMapper();

ObjectNode fragmentNode = mapper.createObjectNode();
fragmentNode = mapper.createObjectNode();
fragmentNode.put("address", "mumbai");
fragmentNode.put("workFor", "zzz Pvt Ltd");
String fragment = mapper.writeValueAsString(fragmentNode);

pb.insertFragment("$.[\"workInformation\"]", Position.LAST_CHILD, fragment);

這應該可以解決問題,並將其插入

{
    "address":"Mumbai", 
    "workFor":"zzz Pvt Ltd"
}

在“ workInformation”屬性的末尾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM