• Dionatan Vieira
  • NEWBIE
  • 0 Points
  • Member since 2022

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 2
    Questions
  • 2
    Replies
I have an apex class that converts a JSON response to a list.
After update a ear file from my API, the JSON response now has new fields.
Before the update, the class works perfectly, but with the new response, I get the error "Malformed JSON: Expected '[' at the beginning of List/Set".
I tried to include the new fields at my class, but the error persists.

The class:
 
public class TESTE {

    private static final TESTE instance = new TESTE();
    private static final ConfigIntegracao__c config = ConfigIntegracao__c.getInstance();


    public static TESTE getInstance(){
        //new Map<Grupo__c, String>
        return instance;
    }
    public class lista{
    public String idGeral{get;set;}
    public String dtAtz{get;set;}
    public String cdGrupoSimilarItem{get;set;}
    public List<Itens> itens{get;set;}
    public List<Codigos> codigos{get;set;}
    }
    public static List<Product2> ProdutoConstruct(List<Itens> produtos){
        
        List<Product2> ret = new List<Product2>();               
        
        for(Itens produto: produtos){
            
            Product2 pt = new Product2(); 
            pt.IdGeral__c = produto.idItem;
            pt.CodigoProduto__c = produto.cdItem;
            pt.CodigoItem__c = produto.cdItem;
            pt.Name = produto.nmItem;            
            pt.NomeReduzido__c = produto.nmReduzido;
            
            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;
            if(produto.qtAtual != null && produto.qtAtual != ''){
                pt.Quantidade__c = Decimal.valueOf(produto.qtAtual);
            }
            // não achei campo no Product2 para bater com: fichaTecnica
            pt.QuantidadeImagens__c = produto.qtImagem; 
            pt.Integrado__c = true;
            pt.CurvaABCImpave__c = produto.curvaAbc;        
            pt.CurvaABCFornecedor__c = produto.curvaAbcForn;
            
            //NOVOS PARÂMETROS
            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.nvcstOrigem__c = produto.cstOrigem;
            pt.nvobs__c = produto.obs;
            pt.nvobsConferenciaSaida__c = produto.obsConferenciaSaida;
            pt.nvobsEmbalagem__c = produto.obsEmbalagem;
            pt.nvobsCompras__c = produto.obsCompras;
            pt.nvobsFichaTecnica__c = produto.obsFichaTecnica;
            pt.nvnmMarca__c = produto.nmMarca; 
            pt.nvestoqueDisponivel__c = produto.estoqueDisponivel;
            pt.nvtemSimilares__c = produto.temSimilares;
           
            ret.add(pt);
            
        }
        
        return ret;
    }
    public class Itens {
        @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 Integer 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 Integer 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;}
    }

    public class Codigos {
        @AuraEnabled
        public String codigo{get;set;}
        @AuraEnabled
        public String descricao{get;set;}
    }

    @AuraEnabled
    public static List<Lista> GetSimilarById (String id, String chave){
        // String chave = null;
        List<Account> ret = new List<Account> (); 
        List<Lista> retorno = new List<Lista>();
        // chave = IntegracaoUtils.GetAutorization();

        System.debug('INICIO');
        if(chave != null){

            Http h = new Http();
            HttpRequest req = new HttpRequest();
            URL baseUrl = URL.getSalesforceBaseUrl();                          
            req.setEndpoint(config.EndPoint__c+'/Similares/getByItem?item='+id);
            
            req.setMethod('GET');
            req.setTimeout(120000);
            req.setHeader('authToken', chave);
 
            try{
                HttpResponse res = h.send(req);
                System.debug(res.getBody());
                String retflex = res.getBody();
                
                retorno = (List<Lista>)System.JSON.deserialize(retflex, List<Lista>.class);
                
                
                 return retorno;
            }
            catch(exception e){
                System.debug('Erro: ' + e);
                 return null;
            } 
        }
        else{
            System.debug('Chave Inválida '+chave);
            // return null;
        }
        return retorno;
    }
}


The old JSON response:
 
[
    {
        "idGeral": 1000021541136,
        "dtAtz": "2014-08-07 15:42:40.0",
        "cdGrupoSimilarItem": 1466,
        "itens": [
            {
                "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": "\rDIAMETRO PISTÃO 92,50 MM\rESPESSURA 1,55 MM\rALTURA DO PISTÃO A PARTIR DE 0,680 ATÉ 0,744 MM"
            }
        ],
        "codigos": [
            {
                "codigo": "2231142855",
                "descricao": "ORIGINAL"
            }
        ]
    }
]



The new JSON response:
 
[
    {
        "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 MM ESPESSURA 1,55 MM ALTURA 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 MM ESPESSURA 1,55 MM ALTURA DO PISTÃO A PARTIR DE 0,680 ATÉ 0,744 MM ",
                "nmMarca": "AJUSA",
                "estoqueDisponivel": true,
                "temSimilares": true
            }
            
        ],
        "codigos": [
            {
                "codigo": "2231142855",
                "descricao": "ORIGINAL"
            }
            
        ]
    }
]



I really can't understand why the new response with the same format but with new fields don't works. 
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;
    }
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;
    }