问题嵌套 JSON 无法在数据表中显示值

Posted

技术标签:

【中文标题】问题嵌套 JSON 无法在数据表中显示值【英文标题】:Problem Nested JSON cant able to show value in datatable 【发布时间】:2019-02-06 13:02:35 【问题描述】:

来自服务器的响应:

["\"CLIENT\":[\"tranche\":\"1-4\",\"prix\":\"65.96\",\"currency\":\"E\"],\"DISTRIBUTEUR\":[\"tranche\":\"1-4\",\"prix\":52.77,\"currency\":\"E\"],\"FILLIALE\":[\"tranche\":\"1-4\",\"prix\":46.17,\"currency\":\"E\"],\"NULL\":[\"error\":\"Compte inconnu\"],\"NCN_23\":[\"prix\":46.17,\"currency\":0],\"NNA_USA\":[\"prix\":46.17,\"currency\":0]","\"CLIENT\":[\"tranche\":\"5-9\",\"prix\":\"57.38\",\"currency\":\"E\"],\"DISTRIBUTEUR\":[\"tranche\":\"5-9\",\"prix\":45.9,\"currency\":\"E\"],\"FILLIALE\":[\"tranche\":\"5-9\",\"prix\":40.17,\"currency\":\"E\"],\"NULL\":[\"error\":\"Compte inconnu\"],\"NCN_23\":[\"prix\":40.17,\"currency\":0],\"NNA_USA\":[\"prix\":40.17,\"currency\":0]","\"CLIENT\":[\"tranche\":\"10-24\",\"prix\":\"53.61\",\"currency\":\"E\"],\"DISTRIBUTEUR\":[\"tranche\":\"10-24\",\"prix\":42.89,\"currency\":\"E\"],\"FILLIALE\":[\"tranche\":\"10-24\",\"prix\":37.53,\"currency\":\"E\"],\"NULL\":[\"error\":\"Compte inconnu\"],\"NCN_23\":[\"prix\":37.53,\"currency\":0],\"NNA_USA\":[\"prix\":37.53,\"currency\":0]","\"CLIENT\":[\"tranche\":\"25-49\",\"prix\":\"46.49\",\"currency\":\"E\"],\"DISTRIBUTEUR\":[\"tranche\":\"25-49\",\"prix\":37.19,\"currency\":\"E\"],\"FILLIALE\":[\"tranche\":\"25-49\",\"prix\":32.54,\"currency\":\"E\"],\"NULL\":[\"error\":\"Compte inconnu\"],\"NCN_23\":[\"prix\":32.54,\"currency\":0],\"NNA_USA\":[\"prix\":32.54,\"currency\":0]","\"CLIENT\":[\"tranche\":\"50-99\",\"prix\":\"45.55\",\"currency\":\"E\"],\"DISTRIBUTEUR\":[\"tranche\":\"50-99\",\"prix\":36.44,\"currency\":\"E\"],\"FILLIALE\":[\"tranche\":\"50-99\",\"prix\":31.89,\"currency\":\"E\"],\"NULL\":[\"error\":\"Compte inconnu\"],\"NCN_23\":[\"prix\":31.89,\"currency\":0],\"NNA_USA\":[\"prix\":31.89,\"currency\":0]","\"CLIENT\":[\"tranche\":\"100-249\",\"prix\":\"37.75\",\"currency\":\"E\"],\"DISTRIBUTEUR\":[\"tranche\":\"100-249\",\"prix\":30.2,\"currency\":\"E\"],\"FILLIALE\":[\"tranche\":\"100-249\",\"prix\":26.43,\"currency\":\"E\"],\"NULL\":[\"error\":\"Compte inconnu\"],\"NCN_23\":[\"prix\":26.43,\"currency\":0],\"NNA_USA\":[\"prix\":26.43,\"currency\":0]","\"CLIENT\":[\"tranche\":\"250-499\",\"prix\":\"33.14\",\"currency\":\"E\"],\"DISTRIBUTEUR\":[\"tranche\":\"250-499\",\"prix\":26.51,\"currency\":\"E\"],\"FILLIALE\":[\"tranche\":\"250-499\",\"prix\":23.2,\"currency\":\"E\"],\"NULL\":[\"error\":\"Compte inconnu\"],\"NCN_23\":[\"prix\":23.2,\"currency\":0],\"NNA_USA\":[\"prix\":23.2,\"currency\":0]","\"CLIENT\":[\"tranche\":\"500-999\",\"prix\":\"29.31\",\"currency\":\"E\"],\"DISTRIBUTEUR\":[\"tranche\":\"500-999\",\"prix\":23.45,\"currency\":\"E\"],\"FILLIALE\":[\"tranche\":\"500-999\",\"prix\":20.52,\"currency\":\"E\"],\"NULL\":[\"error\":\"Compte inconnu\"],\"NCN_23\":[\"prix\":20.52,\"currency\":0],\"NNA_USA\":[\"prix\":20.52,\"currency\":0]","\"CLIENT\":[\"tranche\":\"1000+\",\"prix\":\"27.95\",\"currency\":\"E\"],\"DISTRIBUTEUR\":[\"tranche\":\"1000+\",\"prix\":22.36,\"currency\":\"E\"],\"FILLIALE\":[\"tranche\":\"1000+\",\"prix\":19.57,\"currency\":\"E\"],\"NULL\":[\"error\":\"Compte inconnu\"],\"NCN_23\":[\"prix\":19.57,\"currency\":0],\"NNA_USA\":[\"prix\":19.57,\"currency\":0]"]

     var jsonData=JSON.parse(response.getReturnValue());
                        console.log(jsonData); 

  component.set('v.mycolumns',[label: 'S No', fieldName: 'SNO', type: 'text',
                     label: 'Client Type', fieldName: 'Client', type: 'text',
                     label: 'Slab', fieldName: 'tranche', type: 'text',
                     label: 'Price', fieldName: 'prix', type: 'text',
                   label: 'Currency', fieldName: 'currency', type: 'text',

                         ])

                       var rows=[];              
                            for (var key in jsonData)
                             var curName = key;
                             var value = jsonData[key];
                             var test = jsonData[key[value]];
                       rows.push(SNO : curName,
                       Client:jsonData[curName]+"",
                       currency:(jsonData[curName[test]].currency)+"",  
                       prix:(jsonData[curName[test]].prix)+"",
                       tranche:(jsonData[curName[test]].tranche)+"");   
                       
                        component.set('v.mydata',rows);  
                    
              );
                // enqueue the server side action  
                $A.enqueueAction(action);

我想在我的数据表中显示这个项目

我将所有值都设为“未定义”

有人可以帮我解决这个错误吗?

【问题讨论】:

getReturnValue 返回什么?那是第 1 行吗? @82Tuskers 以上 json 在我的第一行中提到是 ..但这是一个包含元素 [0] 处的字符串的数组。 【参考方案1】:

你可以试试吗

JSON.parse(response.getReturnValue()[0])

我认为这应该适用于上述 JSON 响应。 JSON 是有效的。

【讨论】:

它只给出结果“[”作为上述代码的输出 好的,知道了......然后你想做JSON.parse(response.getReturnValue())[0]并将其分配给jsonData 不,它也有效。它只返回 1 组。我有 8 组数据 这可能是服务器响应问题。因为在粘贴的 JSON 中,我只看到以下键的一个数组元素:[ "CLIENT", "DISTRIBUTEUR", "FILLIALE", "NULL", "NCN_23", "NNA_USA" ]【参考方案2】:

试试这个:

    var myMessage=["\"CLIENT\":[\"tranche\":\"1-4\",\"prix\":\"65.96\",\"currency\":\"E\"],\"DISTRIBUTEUR\":[\"tranche\":\"1-4\",\"prix\":52.77,\"currency\":\"E\"],\"FILLIALE\":[\"tranche\":\"1-4\",\"prix\":46.17,\"currency\":\"E\"],\"NULL\":[\"error\":\"Compte inconnu\"],\"NCN_23\":[\"prix\":46.17,\"currency\":0],\"NNA_USA\":[\"prix\":46.17,\"currency\":0]","\"CLIENT\":[\"tranche\":\"5-9\",\"prix\":\"57.38\",\"currency\":\"E\"],\"DISTRIBUTEUR\":[\"tranche\":\"5-9\",\"prix\":45.9,\"currency\":\"E\"],\"FILLIALE\":[\"tranche\":\"5-9\",\"prix\":40.17,\"currency\":\"E\"],\"NULL\":[\"error\":\"Compte inconnu\"],\"NCN_23\":[\"prix\":40.17,\"currency\":0],\"NNA_USA\":[\"prix\":40.17,\"currency\":0]","\"CLIENT\":[\"tranche\":\"10-24\",\"prix\":\"53.61\",\"currency\":\"E\"],\"DISTRIBUTEUR\":[\"tranche\":\"10-24\",\"prix\":42.89,\"currency\":\"E\"],\"FILLIALE\":[\"tranche\":\"10-24\",\"prix\":37.53,\"currency\":\"E\"],\"NULL\":[\"error\":\"Compte inconnu\"],\"NCN_23\":[\"prix\":37.53,\"currency\":0],\"NNA_USA\":[\"prix\":37.53,\"currency\":0]","\"CLIENT\":[\"tranche\":\"25-49\",\"prix\":\"46.49\",\"currency\":\"E\"],\"DISTRIBUTEUR\":[\"tranche\":\"25-49\",\"prix\":37.19,\"currency\":\"E\"],\"FILLIALE\":[\"tranche\":\"25-49\",\"prix\":32.54,\"currency\":\"E\"],\"NULL\":[\"error\":\"Compte inconnu\"],\"NCN_23\":[\"prix\":32.54,\"currency\":0],\"NNA_USA\":[\"prix\":32.54,\"currency\":0]","\"CLIENT\":[\"tranche\":\"50-99\",\"prix\":\"45.55\",\"currency\":\"E\"],\"DISTRIBUTEUR\":[\"tranche\":\"50-99\",\"prix\":36.44,\"currency\":\"E\"],\"FILLIALE\":[\"tranche\":\"50-99\",\"prix\":31.89,\"currency\":\"E\"],\"NULL\":[\"error\":\"Compte inconnu\"],\"NCN_23\":[\"prix\":31.89,\"currency\":0],\"NNA_USA\":[\"prix\":31.89,\"currency\":0]","\"CLIENT\":[\"tranche\":\"100-249\",\"prix\":\"37.75\",\"currency\":\"E\"],\"DISTRIBUTEUR\":[\"tranche\":\"100-249\",\"prix\":30.2,\"currency\":\"E\"],\"FILLIALE\":[\"tranche\":\"100-249\",\"prix\":26.43,\"currency\":\"E\"],\"NULL\":[\"error\":\"Compte inconnu\"],\"NCN_23\":[\"prix\":26.43,\"currency\":0],\"NNA_USA\":[\"prix\":26.43,\"currency\":0]","\"CLIENT\":[\"tranche\":\"250-499\",\"prix\":\"33.14\",\"currency\":\"E\"],\"DISTRIBUTEUR\":[\"tranche\":\"250-499\",\"prix\":26.51,\"currency\":\"E\"],\"FILLIALE\":[\"tranche\":\"250-499\",\"prix\":23.2,\"currency\":\"E\"],\"NULL\":[\"error\":\"Compte inconnu\"],\"NCN_23\":[\"prix\":23.2,\"currency\":0],\"NNA_USA\":[\"prix\":23.2,\"currency\":0]","\"CLIENT\":[\"tranche\":\"500-999\",\"prix\":\"29.31\",\"currency\":\"E\"],\"DISTRIBUTEUR\":[\"tranche\":\"500-999\",\"prix\":23.45,\"currency\":\"E\"],\"FILLIALE\":[\"tranche\":\"500-999\",\"prix\":20.52,\"currency\":\"E\"],\"NULL\":[\"error\":\"Compte inconnu\"],\"NCN_23\":[\"prix\":20.52,\"currency\":0],\"NNA_USA\":[\"prix\":20.52,\"currency\":0]","\"CLIENT\":[\"tranche\":\"1000+\",\"prix\":\"27.95\",\"currency\":\"E\"],\"DISTRIBUTEUR\":[\"tranche\":\"1000+\",\"prix\":22.36,\"currency\":\"E\"],\"FILLIALE\":[\"tranche\":\"1000+\",\"prix\":19.57,\"currency\":\"E\"],\"NULL\":[\"error\":\"Compte inconnu\"],\"NCN_23\":[\"prix\":19.57,\"currency\":0],\"NNA_USA\":[\"prix\":19.57,\"currency\":0]"];

    var jsonData = JSON.parse("["+myMessage+"]");
    
    console.log(jsonData);

【讨论】:

以上是关于问题嵌套 JSON 无法在数据表中显示值的主要内容,如果未能解决你的问题,请参考以下文章

无法显示嵌套 JSON 文件/模型的数据

取消嵌套嵌套 json 数据以显示在 Quicksight 中

在 React Native 中访问嵌套数组的值

我无法解析应用程序中 JSON 的嵌套类中的 mag 以及地点和时间,它们都将值显示为 null

无法将值存储到 oracle 中的嵌套表中

显示从 Nodejs 到 EJS 的嵌套 JSON