json Jolt在转换后返回null,但在www.example.com上也是http://jolt-demo.appspot.com/#inception

92dk7w1h  于 2023-01-18  发布在  其他
关注(0)|答案(1)|浏览(96)

我正在尝试转换下面的JSON:

发件人:

{
  "id": 123,
  "name": {
    "firstName": "shiva",
    "lastName": "kumar"
  },
  "dateOfBirth": "11/09/2012",
  "emailId": "mymail@gmail.com",
  "address": {
    "addressLine1": "blr",
    "addressLine2": "KA"
  },
  "salary": 12334
}

收件人:

{
  "id": 123,
  "email": "mymail@gmail.com",
  "salary": 12334,
  "fullname": {
    "firstName": "shiva",
    "lastName": "kumar"
  },
  "fullAdress": "blr KA"
}

**代码:**以下代码仅返回null

private JSONObject tranformRequest(String json, String specFile){
    
            URI uri = Thread.currentThread().getContextClassLoader().getResource(specFile).toURI();
            String jsonSpec = Files.readAllLines(Paths.get(uri)).stream().collect(Collectors.joining());
            JSONArray jsonArray = new JSONArray(jsonSpec);
            List<Map<String, Object>> list = new ArrayList<>();
            for(int i = 0 ; i < jsonArray.length();i++){
                list.add(jsonArray.getJSONObject(i).toMap());
            }
            Chainr chainr = Chainr.fromSpec(list);//  JsonUtils.classpathToList( "/path/to/chainr/spec.json" );
    
            Object output = chainr.transform( json );
    
            return (JSONObject) output;
        }

pom.xml

         <dependency>
            <groupId>com.bazaarvoice.jolt</groupId>
            <artifactId>jolt-core</artifactId>
            <version>0.1.7</version>
        </dependency>

[

hc2pp10m

hc2pp10m1#

如果jolt无法转换您的输入JSON,则返回null。因此,它可以用于jolt规范。
让我们使用网站的演示版本。也许问题就解决了。
请像jolt-demo网站一样用0.1.1版本更新你的软件包,并使用下面的代码。

[
  {
    "operation": "shift",
    "spec": {
      "id": "&",
      "name": "fullname",
      "emailId": "email",
      "salary": "salary",
      "address": {
        "*": "&1"
      }
    }
  },
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": "=join(' ',@0)"
    }
  }
]

如果你有任何问题,请在评论中说。

相关问题