Support Questions
Find answers, ask questions, and share your expertise

NiFi CSV to Json with Json object string as value

New Contributor

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

1 ACCEPTED SOLUTION

New Contributor

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"

View solution in original post

1 REPLY 1

New Contributor

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"

; ;