You need to sign in to do that
Don't have an account?
Dionatan Vieira
Malformed JSON: Expected '[' at the beginning of List/Set
Hello anywone!
I'm getting the error
"Malformed JSON: Expected '[' at the beginning of List/Set" when my Integration tryes to cath a result of a external system.
The return of the API is:
[
{
"idGeral": 1000021541136,
"dtAtz": "2014-08-07 15:42:40.0",
"cdGrupoSimilarItem": 1466,
"itens": [
{
"preco": 0,
"flPromocao": false,
"pcMaxDescontoAut": 0,
"ipi": 0,
"st": 0,
"ipiSt": 0,
"idItem": 1027,
"cdItem": "10070300",
"nmItem": "JUNTA CABEÇOTE H100/L200/HR/K2500 2.5 8V FIBRA 1.55MM 4 PIC*",
"nmReduzido": "JUNTA CABEÇOTE H100 2.5 8V 97/... L200 2.5 8V 92/../02 / HR/K2500 2.5 8V 05/../12 FIBRA 1.55MM 4 PIC",
"curvaAbc": "A",
"curvaAbcForn": "C",
"flAtivo": "S",
"cdGrupo": 110,
"cdSubgrupo": 1,
"unMedCompra": "UNID",
"unMedArmazenagem": "PC",
"unMedEstoque": "PC",
"unMedVenda": "PC",
"cdLinhaProduto": 4,
"cdOriginal": "",
"cdMarca": 1,
"cdFabricante": "10070300",
"fichaTecnica": "DIAMETRO PISTÃO 92,50 MMESPESSURA 1,55 MMALTURA DO PISTÃO A PARTIR DE 0,680 ATÉ 0,744 MM",
"qtAtual": 12.0,
"cstOrigem": "",
"obs": "Teste",
"obsConferenciaSaida": "",
"obsEmbalagem": "",
"obsCompras": "\r\n",
"obsFichaTecnica": "DIAMETRO PISTÃO 92,50 MMESPESSURA 1,55 MMALTURA DO PISTÃO A PARTIR DE 0,680 ATÉ 0,744 MM",
"nmMarca": "AJUSA",
"estoqueDisponivel": true,
"temSimilares": true
}
],
"codigos": [
{
"codigo": "2231142855",
"descricao": "ORIGINAL"
}
]
}
]
The req is:
HttpResponse res = h.send(req);
System.debug(res.getBody());
String s = res.getBody();
retorno = (List<SimilarWrapper>)System.JSON.deserialize(s, List<SimilarWrapper>.class);
The classes are:
public class SimilarWrapper{
public Long idGeral {get;set;}
public String dtAtz {get;set;}
public Integer cdGrupoSimilarItem {get;set;}
public List<IntegracaoProdutoUtils.ProdutoWrapper> itens {get;set;}
public List<CodigoWrapper> codigos {get;set;}
public class CodigoWrapper{
@AuraEnabled
public String codigo {get;set;}
@AuraEnabled
public String descricao {get;set;}
}
The second wrapper (IntegracaoProdutoUtils.ProdutoWrapper) is:
public static List<Product2> ProdutoConstruct(List<ProdutoWrapper> produtos){
List<Product2> ret = new List<Product2>();
for(ProdutoWrapper produto: produtos){
Product2 pt = new Product2();
pt.nvpreco__c = produto.preco;
pt.nvflPromocao__c = produto.flPromocao;
pt.nvpcMaxDescontoAut__c = produto.pcMaxDescontoAut;
pt.nvipi__c = produto.ipi;
pt.nvst__c = produto.st;
pt.nvipiSt__c = produto.ipiSt;
pt.IdGeral__c = produto.idItem;
pt.CodigoProduto__c = produto.cdItem;
pt.CodigoItem__c = produto.cdItem;
pt.Name = produto.nmItem;
pt.NomeReduzido__c = produto.nmReduzido;
pt.CurvaABCImpave__c = produto.curvaAbc;
pt.CurvaABCFornecedor__c = produto.curvaAbcForn;
if (produto.flAtivo.tolowercase() == 's'){
pt.Ativo__c = true;
}else{
pt.Ativo__c = false;
}
if (produto.cdGrupo != null) {
Grupo__c grupo = new Grupo__c(CodigoGrupo__c = produto.cdGrupo);
pt.Grupo__r = grupo;
}
if (produto.cdGrupo != null && produto.cdSubgrupo != null) {
Subgrupo__c subgrupo = new Subgrupo__c(CodigoSubGrupo__c = '' + produto.cdGrupo + produto.cdSubgrupo);
pt.Subgrupo__r = subgrupo;
}
pt.UnidadeCompra__c = produto.unMedCompra;
pt.UnidadeArmazenagem__c = produto.unMedArmazenagem;
pt.UnidadeEstoque__c = produto.unMedEstoque;
pt.UnidadeVenda__c = produto.unMedVenda;
pt.CodigoLinhaProduto__c = produto.cdLinhaProduto != null ? Decimal.valueOf(produto.cdLinhaProduto) : null;
pt.CodigoOriginal__c = produto.cdOriginal;
if (produto.cdMarca != null) {
Marca__c marca = new Marca__c(CodigoMarca__c = produto.cdMarca);
pt.Marca__r = marca;
}
pt.CodigoFabricante__c = produto.cdFabricante;
// não achei campo no Product2 para bater com: fichaTecnica
pt.nvqtAtual__c = produto.qtAtual;
//if(produto.qtAtual != null && produto.qtAtual != ''){
//pt.Quantidade__c = Decimal.valueOf(produto.qtAtual);}
pt.nvcstOrigem__c = produto.cstOrigem;
pt.nvobs__c = produto.obs;
pt.nvobsConferenciaSaida__c = produto.obsConferenciaSaida;
pt.obsEmbalagem__c = produto.obsEmbalagem;
pt.obsCompras__c = produto.obsCompras;
pt.obsFichaTecnica__c = produto.obsFichaTecnica;
pt.nvnmMarca__C = produto.nmMarca;
pt.nvestoqueDisponivel__c = produto.estoqueDisponivel;
pt.nvtemSimilares__c = produto.temSimilares;
pt.Integrado__c = true;
// pt.QuantidadeImagens__c = produto.qtImagem;
//if(!ret.contains(pt)){
ret.add(pt);
//}
}
return ret;
}
I'm getting the error
"Malformed JSON: Expected '[' at the beginning of List/Set" when my Integration tryes to cath a result of a external system.
The return of the API is:
[
{
"idGeral": 1000021541136,
"dtAtz": "2014-08-07 15:42:40.0",
"cdGrupoSimilarItem": 1466,
"itens": [
{
"preco": 0,
"flPromocao": false,
"pcMaxDescontoAut": 0,
"ipi": 0,
"st": 0,
"ipiSt": 0,
"idItem": 1027,
"cdItem": "10070300",
"nmItem": "JUNTA CABEÇOTE H100/L200/HR/K2500 2.5 8V FIBRA 1.55MM 4 PIC*",
"nmReduzido": "JUNTA CABEÇOTE H100 2.5 8V 97/... L200 2.5 8V 92/../02 / HR/K2500 2.5 8V 05/../12 FIBRA 1.55MM 4 PIC",
"curvaAbc": "A",
"curvaAbcForn": "C",
"flAtivo": "S",
"cdGrupo": 110,
"cdSubgrupo": 1,
"unMedCompra": "UNID",
"unMedArmazenagem": "PC",
"unMedEstoque": "PC",
"unMedVenda": "PC",
"cdLinhaProduto": 4,
"cdOriginal": "",
"cdMarca": 1,
"cdFabricante": "10070300",
"fichaTecnica": "DIAMETRO PISTÃO 92,50 MMESPESSURA 1,55 MMALTURA DO PISTÃO A PARTIR DE 0,680 ATÉ 0,744 MM",
"qtAtual": 12.0,
"cstOrigem": "",
"obs": "Teste",
"obsConferenciaSaida": "",
"obsEmbalagem": "",
"obsCompras": "\r\n",
"obsFichaTecnica": "DIAMETRO PISTÃO 92,50 MMESPESSURA 1,55 MMALTURA DO PISTÃO A PARTIR DE 0,680 ATÉ 0,744 MM",
"nmMarca": "AJUSA",
"estoqueDisponivel": true,
"temSimilares": true
}
],
"codigos": [
{
"codigo": "2231142855",
"descricao": "ORIGINAL"
}
]
}
]
The req is:
HttpResponse res = h.send(req);
System.debug(res.getBody());
String s = res.getBody();
retorno = (List<SimilarWrapper>)System.JSON.deserialize(s, List<SimilarWrapper>.class);
The classes are:
public class SimilarWrapper{
public Long idGeral {get;set;}
public String dtAtz {get;set;}
public Integer cdGrupoSimilarItem {get;set;}
public List<IntegracaoProdutoUtils.ProdutoWrapper> itens {get;set;}
public List<CodigoWrapper> codigos {get;set;}
public class CodigoWrapper{
@AuraEnabled
public String codigo {get;set;}
@AuraEnabled
public String descricao {get;set;}
}
The second wrapper (IntegracaoProdutoUtils.ProdutoWrapper) is:
public static List<Product2> ProdutoConstruct(List<ProdutoWrapper> produtos){
List<Product2> ret = new List<Product2>();
for(ProdutoWrapper produto: produtos){
Product2 pt = new Product2();
pt.nvpreco__c = produto.preco;
pt.nvflPromocao__c = produto.flPromocao;
pt.nvpcMaxDescontoAut__c = produto.pcMaxDescontoAut;
pt.nvipi__c = produto.ipi;
pt.nvst__c = produto.st;
pt.nvipiSt__c = produto.ipiSt;
pt.IdGeral__c = produto.idItem;
pt.CodigoProduto__c = produto.cdItem;
pt.CodigoItem__c = produto.cdItem;
pt.Name = produto.nmItem;
pt.NomeReduzido__c = produto.nmReduzido;
pt.CurvaABCImpave__c = produto.curvaAbc;
pt.CurvaABCFornecedor__c = produto.curvaAbcForn;
if (produto.flAtivo.tolowercase() == 's'){
pt.Ativo__c = true;
}else{
pt.Ativo__c = false;
}
if (produto.cdGrupo != null) {
Grupo__c grupo = new Grupo__c(CodigoGrupo__c = produto.cdGrupo);
pt.Grupo__r = grupo;
}
if (produto.cdGrupo != null && produto.cdSubgrupo != null) {
Subgrupo__c subgrupo = new Subgrupo__c(CodigoSubGrupo__c = '' + produto.cdGrupo + produto.cdSubgrupo);
pt.Subgrupo__r = subgrupo;
}
pt.UnidadeCompra__c = produto.unMedCompra;
pt.UnidadeArmazenagem__c = produto.unMedArmazenagem;
pt.UnidadeEstoque__c = produto.unMedEstoque;
pt.UnidadeVenda__c = produto.unMedVenda;
pt.CodigoLinhaProduto__c = produto.cdLinhaProduto != null ? Decimal.valueOf(produto.cdLinhaProduto) : null;
pt.CodigoOriginal__c = produto.cdOriginal;
if (produto.cdMarca != null) {
Marca__c marca = new Marca__c(CodigoMarca__c = produto.cdMarca);
pt.Marca__r = marca;
}
pt.CodigoFabricante__c = produto.cdFabricante;
// não achei campo no Product2 para bater com: fichaTecnica
pt.nvqtAtual__c = produto.qtAtual;
//if(produto.qtAtual != null && produto.qtAtual != ''){
//pt.Quantidade__c = Decimal.valueOf(produto.qtAtual);}
pt.nvcstOrigem__c = produto.cstOrigem;
pt.nvobs__c = produto.obs;
pt.nvobsConferenciaSaida__c = produto.obsConferenciaSaida;
pt.obsEmbalagem__c = produto.obsEmbalagem;
pt.obsCompras__c = produto.obsCompras;
pt.obsFichaTecnica__c = produto.obsFichaTecnica;
pt.nvnmMarca__C = produto.nmMarca;
pt.nvestoqueDisponivel__c = produto.estoqueDisponivel;
pt.nvtemSimilares__c = produto.temSimilares;
pt.Integrado__c = true;
// pt.QuantidadeImagens__c = produto.qtImagem;
//if(!ret.contains(pt)){
ret.add(pt);
//}
}
return ret;
}
That should be something like that:
public class IntegracaoProdutoUtils {
public class ProdutoWrapper { ... }
}
Follows:
public class ProdutoWrapper{
@AuraEnabled
public String preco {get;set;}
@AuraEnabled
public String flPromocao {get;set;}
@AuraEnabled
public String pcMaxDescontoAut {get;set;}
@AuraEnabled
public String ipi {get;set;}
@AuraEnabled
public String st {get;set;}
@AuraEnabled
public String ipiSt {get;set;}
@AuraEnabled
public String idItem{get;set;}
@AuraEnabled
public String cdItem {get;set;}
@AuraEnabled
public String nmItem {get;set;}
@AuraEnabled
public String nmReduzido{get;set;}
@AuraEnabled
public String curvaAbc{get;set;}
@AuraEnabled
public String curvaAbcForn{get;set;}
@AuraEnabled
public String flAtivo {get;set;}
@AuraEnabled
public String cdGrupo {get;set;}
@AuraEnabled
public String cdSubgrupo{get;set;}
@AuraEnabled
public String unMedCompra {get;set;}
@AuraEnabled
public String unMedArmazenagem {get;set;}
@AuraEnabled
public String unMedEstoque{get;set;}
@AuraEnabled
public String unMedVenda {get;set;}
@AuraEnabled
public String cdLinhaProduto {get;set;}
@AuraEnabled
public String cdOriginal{get;set;}
@AuraEnabled
public String cdMarca {get;set;}
@AuraEnabled
public String cdFabricante {get;set;}
@AuraEnabled
public String fichaTecnica{get;set;}
@AuraEnabled
public String qtAtual{get;set;}
@AuraEnabled
public String cstOrigem {get;set;}
@AuraEnabled
public String obs {get;set;}
@AuraEnabled
public String obsConferenciaSaida {get;set;}
@AuraEnabled
public String obsEmbalagem {get;set;}
@AuraEnabled
public String obsCompras {get;set;}
@AuraEnabled
public String obsFichaTecnica {get;set;}
@AuraEnabled
public String nmMarca{get;set;}
@AuraEnabled
public String estoqueDisponivel{get;set;}
@AuraEnabled
public String temSimilares{get;set;}
//@AuraEnabled
//public Integer qtImagem{get;set;}
}
"obsCompras": "\\r\\n",
https://www.geeksforgeeks.org/how-to-handle-newlines-in-json/
‘\\n’ (backward slash).
Hey Alain, thanks for return!
The error occurs in all sentences, including those that do not have the return pointed to by you, for example:
[
{
"idGeral": 1000140351640,
"dtAtz": "2019-07-31 08:16:26.0",
"cdGrupoSimilarItem": 11834,
"itens": [
{
"preco": 0,
"flPromocao": false,
"pcMaxDescontoAut": 0,
"ipi": 0,
"st": 0,
"ipiSt": 0,
"idItem": 28967,
"cdItem": "7039T",
"nmItem": "&CABO DE EMBREAGEM (800MM)",
"nmReduzido": "CABO DE EMBREAGEM",
"curvaAbc": "N/F",
"curvaAbcForn": "",
"flAtivo": "S",
"cdGrupo": 113,
"cdSubgrupo": 15,
"unMedCompra": "PC",
"unMedArmazenagem": "PC",
"unMedEstoque": "PC",
"unMedVenda": "PC",
"cdLinhaProduto": 2,
"cdOriginal": "",
"cdMarca": 79,
"cdFabricante": "7039",
"fichaTecnica": "",
"qtAtual": 1.0,
"cstOrigem": "",
"obs": "",
"obsConferenciaSaida": "",
"obsEmbalagem": "",
"obsCompras": "",
"obsFichaTecnica": "",
"nmMarca": "TUBA",
"estoqueDisponivel": true,
"temSimilares": true
}
],
"codigos": [
{
"codigo": "155030",
"descricao": "CABOVEL"
},
{
"codigo": "30-444/30-434",
"descricao": "FÂNIA"
},
{
"codigo": "90522447",
"descricao": "ORIGINAL"
},
{
"codigo": "GM261C",
"descricao": "EFRARI"
}
]
}
]