Skip to main content
tsunbonyu
Gold ⭐️
September 28, 2019
Solved

NiFi CSV to Json with Json object string as value

Hi, I am looking for the way to convert the CSV to JSON

I have a csv file with json object as value,

 

"name","item"

"david","{""currency"":""USD"",""content"":""Beauty Lips""}"

 

 

I used ConvertRecord processor with CSVReader and JsonRecordSetWriter

And the output JSON is

 

{
"name":"david",
"item":"{\"currency\":\"USD\",\"content\":\"Beauty Lips\"}"
}

 

But what I expected is

 

{
"name":"david",
"item":{"currency":"USD","name":"Beauty Lips"}
}

 

 

How can I archive this?

Thank you

 

David

tsunbonyu
tsunbonyuAnswer
Gold ⭐️
September 30, 2019

I re0rder the json to

 

 

 

{
"item":{"currency":"USD","name":"Beauty Lips"},"name":"david"
}

 

 

 

I used ReplaceText processor

search value: "item":(.*),"name"

 

replace value: "item":${'$1':replaceFirst('"', ''):substringBeforeLast('"')},"name"

 

It does not look beauty but it works =/

 

My question is why I don't need to use unexcapeJson() like this?

"item":${'$1':replaceFirst('"', ''):substringBeforeLast('"'):unescapeJson()},"name"

1 reply

tsunbonyu
tsunbonyuAuthorAnswer
Gold ⭐️
September 30, 2019

I re0rder the json to

 

 

 

{
"item":{"currency":"USD","name":"Beauty Lips"},"name":"david"
}

 

 

 

I used ReplaceText processor

search value: "item":(.*),"name"

 

replace value: "item":${'$1':replaceFirst('"', ''):substringBeforeLast('"')},"name"

 

It does not look beauty but it works =/

 

My question is why I don't need to use unexcapeJson() like this?

"item":${'$1':replaceFirst('"', ''):substringBeforeLast('"'):unescapeJson()},"name"

Translate