Hi Guys
I have a lithe problem when I try to import Json using APOC.
for example, with this Json
{"CODIGO":1, "NMPRODUTO":"SECADOR DE CABELO", "OBS": { "COR" : "PRETO", "VOLTAGEM" : "18V"}},
{"CODIGO":2, "NMPRODUTO":"CADERNO", "OBS": { "QTDPAGINAS" : 500, "MARCA" : "XYZ"}}
using this code for import
CALL apoc.load.json("file:///c:/TESTE.json")
YIELD value
create( n:PRODUTO { CODIGO:value.CODIGO,
NMPRODUTO:value.NMPRODUTO,
OBS.COR:value.OBS.COR,
OBS.VOLTAGEM:value.OBS.VOLTAGEM,
OBS.QTDPAGINAS:value.OBS.QTDPAGINAS,
OBS.MARCA:value.OBS.MARCA
})
I received this error:
Invalid input '.': expected an identifier character, whitespace or ':' (line 5, column 4 (offset: 125))
"OBS.COR:value.OBS.COR,"
ameyasoft
( Ameyasoft)
January 3, 2021, 8:22pm
2
braian.daguilar:
OBS.COR:value.OBS.COR,
OBS.VOLTAGEM:value.OBS.VOLTAGEM,
OBS.QTDPAGINAS:value.OBS.QTDPAGINAS,
OBS.MARCA:value.OBS.MARCA
Remove the '.' in the property names:
OBSCOR:value.OBS.COR,
OBSVOLTAGEM:value.OBS.VOLTAGEM,
OBSQTDPAGINAS:value.OBS.QTDPAGINAS,
OBSMARCA:value.OBS.MARCA
1 Like
I tried to do this too.
CALL apoc.load.json("file:///TESTE.json")
YIELD value
create( n:PRODUTO { CODIGO:value.CODIGO,
NMPRODUTO:value.NMPRODUTO,
OBSCOR:value.OBS.COR,
OBSVOLTAGEM:value.OBS.VOLTAGEM,
OBSQTDPAGINAS:value.OBS.QTDPAGINAS,
OBSMARCA:value.OBS.MARCA
})
but, I received this error
Failed to invoke procedure `apoc.load.json`: Caused by: com.fasterxml.jackson.core.JsonParseException: Unexpected character (',' (code 44)): expected a value
at [Source: (apoc.export.util.CountingInputStream); line: 1, column: 94]
koji
(Koji Annoura)
January 3, 2021, 8:46pm
4
Hi @braian.daguilar
First I added square brackets to the data like this.
[{"CODIGO":1, "NMPRODUTO":"SECADOR DE CABELO", "OBS": { "COR" : "PRETO", "VOLTAGEM" : "18V"}},
{"CODIGO":2, "NMPRODUTO":"CADERNO", "OBS": { "QTDPAGINAS" : 500, "MARCA" : "XYZ"}}]
And you can use backticks, too.
CALL apoc.load.json("file:///TESTE.json")
YIELD value
CREATE ( n:PRODUTO { CODIGO:value.CODIGO,
NMPRODUTO:value.NMPRODUTO,
`OBS.COR`:value.OBS.COR,
`OBS.VOLTAGEM`:value.OBS.VOLTAGEM,
`OBS.QTDPAGINAS`:value.OBS.QTDPAGINAS,
`OBS.MARCA`:value.OBS.MARCA
})
But I think it's better to remove the period (@ameyasoft ) or create those names with an underscore or something.
1 Like
Hi Koji.
Thanks for your answerd, your solution worked very well
1 Like