JSON数组无法正确字符串化

Manojb86

在我的Nodejs站点中,我创建了一个JSON数组并将其发送到angularJs客户端。然后显示为[object,object]。因此,我使用了JSON.stringify,现在它在angularJs客户端中以一种奇怪的方式显示。

在NodeJs端创建数组,

getAttachments = function () {
        let attach = [];
        workflowSession.files.forEach(file => {
            if (file) {
                const item = {
                    text: file.name,
                    link: workflowSession.metadata.portalBaseUrl + "api/files/" + workflowSession.workflowRef + "@"+ file.name 
                }

                attach.push(item);
            }
        });

        return attach;
    };

当我将控制台日志放在Nodejs端时,它显示如下,

[ { text: 'sdee.png',
    link: 'http://localhost:3000/api/files/[email protected]' },
  { text: 'wes.png',
    link: 'http://localhost:3000/api/files/[email protected]' } 
]

但是在AngularJs中,客户端将其显示为[object,object],因此,我对上述数组创建方法进行了如下更改,

getAttachments = function () {
        let attach = [];
        workflowSession.files.forEach(file => {
            if (file) {
                const item = {
                    text: file.name,
                    link: workflowSession.metadata.portalBaseUrl + "api/files/" + workflowSession.workflowRef + "@"+ file.name 
                }

                attach.push(item);
            }
        });

        return JSON.stringify(attach);
    };

然后NodeJs端显示console.log的数据,如下所示,

[
  {"text":"sdee.png","link":"http://localhost:3000/api/files/[email protected]"},   {"text":"wes.png","link":"http://localhost:3000/api/files/[email protected]"}
]

但是在AngularJs的下面显示了它,

[
{"text":"wes.png","link":"http://localhost:3000/api/files/[email protected]"},{"text":"ssdd.png","link":"http://localhost:3000/api/files/[email protected]"}
]

我想迭代此数组,如下面的HTML代码片段所示,但是由于这种格式问题,我不能这样做。“ action.links”是从Nodejs端创建的数组。

<md-menu-content>
  <md-menu-item ng-repeat="item in action.links" ng-if="item.link">
    <md-button href="{{item.link}}" target="_blank">
      {{item.text}}
    </md-button>
  </md-menu-item>
</md-menu-content>

我究竟做错了什么?

Ryanpcmcquen

看起来Angular端正在对HTML进行编码,您可以通过HTML解码运行它:

var htmlDecode = function(str) {
    var temp = document.createElement('span');
    temp.innerHTML = str;
    return temp.textContent;
};

var foo = '[{&#34;text&#34;:&#34;wes.png&#34;,&#34;link&#34;:&#34;http://localhost:3000/api/files/[email protected]&#34;},{&#34;text&#34;:&#34;ssdd.png&#34;,&#34;link&#34;:&#34;http://localhost:3000/api/files/[email protected]&#34;}]';

console.log(
    htmlDecode(foo)
);

理想情况下,尽管您一开始就不会让它编码为HTML。如果您能够共享实时版本的代码,则调试发生这种情况的原因将更加容易。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章