在尝试转换这样的东西时,我为变换后的对象获取了一个空值:
{
"employees": [
{ "f_name" : "tom", "l_name" : "smith" },
{ "f_name" : "don", "l_name" : "jones" }
]
}
Run Code Online (Sandbox Code Playgroud)
对此:
{
"employees": [
{ "firstName" : "tom", "lastName" : "smith" },
{ "firstName" : "don", "lastName" : "jones" }
]
}
Run Code Online (Sandbox Code Playgroud)
这是我使用的规范:
[
{
"operation" : "shift",
"spec" : {
"employees" : {
"f_name" : "firstName"
"l_name" : "lastName"
}
}
]
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的代码:
List<Object> chainrSpecJSON = JsonUtils.classpathToList("path/spec.json");
Chainr chainr = Chainr.fromSpec(chainrSpecJSON);
Object inputJSON = JsonUtils.classpathToObject("path/input.json");
Object transformed …Run Code Online (Sandbox Code Playgroud) 我想要一个条件转换,如果输入中特定字段的值与我的条件匹配,我需要在输出中添加一个属性。下面是我需要的输入和输出。
输入
{
"attr": [
{
"name": "first",
"validations": [
{
"type": "Required",
"value": true
}
]
},
{
"name": "last",
"validations": [
{
"type": "lenght",
"value": "10"
}
]
},
{
"name": "email",
"validations": [
{
"type": "min",
"value": 10
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
输出
{
"attr": [
{
"name": "first",
"validations": [
{
"type": "Required",
"value": true
}
]
},
{
"name": "last",
"validations": [
{
"type": "lenght",
"value": "10"
}
]
},
{
"name": "email",
"validations": …Run Code Online (Sandbox Code Playgroud)我有以下输入JSON:
{
"id": "2ef8a2ee-054f-4b43-956a-8aa4f51a41d5",
"type": "VOICE",
"tags": [
{
"id": "some id 1",
"description": "some description 1"
},
{
"id": "some id 2",
"description": "some description 2"
}
],
"transcription": {
"key1": "val1",
"key2": "val2"
}
}
Run Code Online (Sandbox Code Playgroud)
但是,输出JSON应该类似,并且仅添加默认值:
{
"id": "2ef8a2ee-054f-4b43-956a-8aa4f51a41d5",
"created": "2019-06-18T18:12:37",
"firstName": "Khusan",
"lastName": "Sharipov",
"status": "OPEN"
"type": "VOICE",
"tags": [
{
"id": "some id 1",
"description": "some description 1"
},
{
"id": "some id 2",
"description": "some description 2"
}
],
"transcription": { …Run Code Online (Sandbox Code Playgroud) 我想知道是否有任何方法可以使用 JOLT 转换将 JSON 属性的值连接成一个新属性。
例如,我有以下 JSON:
{
"name": "Mary",
"Year Joined": "2017",
"Gender": "Female"
}
Run Code Online (Sandbox Code Playgroud)
我希望它变成这样:
{
"new": "Mary_2017_Female"
}
Run Code Online (Sandbox Code Playgroud)
是否可以使用 JOLT 来做到这一点,或者是否有其他替代方法可以做到这一点?
我有以下 JSON 文档:
{
"pbid": 123,
"pid": 0,
"time": 1483551745000,
"timestamp": "2017-01-04 17:42:25",
"creationTime": 1483551789000,
"creationTimestamp": "2017-01-04 17:43:09",
"name": "myname",
"triggeredComponents": [
{
"device": {
"did": 20,
"ip": "127.0.0.1",
"firstSeen": 1427474095000,
"lastSeen": 1483545006000,
"typename": "dnsserver"
},
"time": 1483551789000
}
]
}
Run Code Online (Sandbox Code Playgroud)
使用 Jolt 我需要将其转换为以下内容:
{
"event_id" : 123, ( pbid )
"name" : "myname", ( name )
"did": "20", ( triggeredComponents[0].device.did )
"first_seen": 1427474095000, ( triggeredComponents[0].device.firstSeen )
"last_seen": 1483545006000 ( triggeredComponents[0].device.lastSeen )
}
Run Code Online (Sandbox Code Playgroud)
我对基本的转变(event_id和name)没问题,但我不知道如何从数组中提取。这是我目前的尝试(我也尝试过其他一些方法):
[
{ …Run Code Online (Sandbox Code Playgroud) 我正在使用带有分隔符的 Flatten Json 处理器_,到目前为止,它可以很好地展平嵌套记录。但我也注意到它会干扰已经有“_”的键。例如:
{
"first_name": "myfirstname",
"last_name": "mylastname",
"address": {
"billing": "mybilling",
"shipping": "myshipping"
}
}
Run Code Online (Sandbox Code Playgroud)
展平为:
{
"[\"first_name\"]": "myfirstname",
"[\"last_name\"]": "mylastname",
"address_billing": "mybilling",
"address_shipping": "myshipping"
}
Run Code Online (Sandbox Code Playgroud)
同时,“ ”记录按预期被展平,具有字符address的键first_name和也受到干扰。有什么办法可以绕过这个吗?(也许是一种逃避非记录类型的方法?)last_name_
是的,有!我提出这个问题是为了分享我的知识,问答风格,因为我自己很难找到它:)
\n感谢/sf/answers/4747503771/(Barbaros \xc3\x96zhan,请参阅评论)为我指明了正确的方向
\n对于学生项目,我必须提高数据质量。第一步是请求一个 API。其次,我们必须编辑json结构。
这是来自 API 的响应:
{
"lists": [
[
0,
451,
"test",
"953"
],
[
2,
1010,
"hello",
"610"
]
]
}
Run Code Online (Sandbox Code Playgroud)
现在使用 jolt 我想要这样的结果:
{
"lists": [
{
"id": 0,
"clientId": 451,
"name": "test",
"custom_value": "953"
},
{
"id": 2,
"clientId": 1010,
"name": "hello",
"custom_value": "610"
}
]
}
Run Code Online (Sandbox Code Playgroud)
目前,我可以访问数据值,但我不知道如何将其分成带有对象的数组。
我的“代码”:
[
{
"operation": "shift",
"spec": {
"lists": {
"*": {
"*": {
"*": {
"$0": "lists"
}
}
}
}
}
}
]
Run Code Online (Sandbox Code Playgroud)
我错在哪里,如何正确编辑原始数组的结构?
这是我的输入 JSON:
{
"AddressBilling": {
"FirstName": "Some Name",
"LastName": "Some Name",
"Address":"some address"
}
"AddressShipping": {
"FirstName": "",
"LastName": "",
"Address":""
}
}
Run Code Online (Sandbox Code Playgroud)
我想保留“AddressBilling”和“AddressShipping”,但名称不同,即“ payment_address”和“shipping_address”,我为此编写了 payment_address 部分的规范文件
{
"operation": "shift",
"spec": {
"AddressBilling": {
"FirstName": "payment_address.firstname",
"LastName": "payment_address.lastname",
"Address": "payment_address.address"
},
"AddressShipping": {
"FirstName": "shipping_address.firstname",
"LastName": "shipping_address.lastname"
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想要的是检查“AddressShipping”对象中的“Address”键是否为空,然后我想将“AddressBilling”的“Address”复制到“shipping_address”的“Address”。
我有以下 JSON:-
{
"ROWNUM": "328938",
"SOURCE_NAME": "I2323",
"ID": "333333",
"FIRST_NAME": "A121221",
"KNOWN_AS": "G1223321",
"LAST_NAME": "sadsadsd",
"PLACE_OF_BIRTH": "Indsadsadsaddsaia",
"DATE_OF_BIRTH": "sadsaddsa",
"UPRN": "sadsadsad",
"POST_CODE": "asdsadsda",
"POST_TOWN": "GLASGOW",
"ESTIMATED_DOB": "N",
"LAST_UPDATED": "2019-02-11T13:57:05.264Z",
"cluster_id": 3020,
"aliases": [
{
"_id": {
"timestamp": 1550152767,
"machineIdentifier": 6505561,
"processIdentifier": 59,
"counter": 2775622,
"time": 1550152767000,
"timeSecond": 1550152767,
"date": 1550152767000
},
"ROWNUM": "328938",
"SOURCE_NAME": "I2323",
"ID": "333333",
"FIRST_NAME": "A121221",
"KNOWN_AS": "G1223321",
"LAST_NAME": "sadsadsd",
"PLACE_OF_BIRTH": "Indsadsadsaddsaia",
"DATE_OF_BIRTH": "sadsaddsa",
"UPRN": "sadsadsad",
"POST_CODE": "asdsadsda",
"POST_TOWN": "GLASGOW",
"ESTIMATED_DOB": "N",
"LAST_UPDATED": "2019-02-11T13:57:05.264Z",
"cluster_id": 3020,
"score": …Run Code Online (Sandbox Code Playgroud)