cancel
Showing results for 
Search instead for 
Did you mean: 

Head's Up! These forums are read-only. All users and content have migrated. Please join us at community.neo4j.com.

Problem Importing Json with APOC

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,"

1 ACCEPTED SOLUTION

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.

View solution in original post

4 REPLIES 4

ameyasoft
Graph Maven
Remove the '.' in the property names:

OBSCOR:value.OBS.COR,
OBSVOLTAGEM:value.OBS.VOLTAGEM,
OBSQTDPAGINAS:value.OBS.QTDPAGINAS,
OBSMARCA:value.OBS.MARCA

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]

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.

Hi Koji.
Thanks for your answerd, your solution worked very well