在html模板中的angular2中将字符串转换为数组

时间:2017-08-02 12:35:45

标签: angular typescript

我这样得到Json的反应,

var optCities = [{
"resultData": {
"Hoteloption": [
    {   
        "CityRating":"[
        {'City': 'Bangkok','Rating':4.5},
        {'City': 'Phuket','Rating':4.5},
        {'City': 'Nonthaburi','Rating':4.5},
        {'City': 'Broc','Rating':4.5}]"
    }]
}}];

我试图创建一个管道

transform(value: any, args?: any): any {
    var st = JSON.stringify(value);
    var result =  JSON.parse(st);
    return result;
  }

首先尝试创建json对象。 但如果我控制result变量,它仍会显示字符串。

<div *ngFor="let city of optCities[0].resultData.Hoteloption[0].CityRating | strReplace ;let i = index; ">
    {{city.Rating}}
</div>

我缺少什么?

4 个答案:

答案 0 :(得分:2)

您的嵌套对象键应该用double qoutes而不是single来包装,最好从后端修复它,这里有一些简单的解决方案,用JS做它

角管

awk '{ if ($3!=$3*1) {print $0 > "REMOVED_COL_3.txt"} else if ($4<0) {print $0 > "REMOVED_COL_4.txt"} else {print $0 > "everythingelse_out.txt"}}' file.txt && mv -f everythingelse_out.txt file.txt

答案 1 :(得分:1)

您从服务器

获取的CityRating数组的JSON不正确

这是一个解决方法 在组件中定义函数

switch

在你的模板中使用

Dictionary<string, int>

该函数将返回一个vaild JSON数组,这样你的循环就可以了

答案 2 :(得分:0)

那是因为您的JSON对象是错误的。从CityRating中删除数组中的双引号。

var optCities = [{
"resultData": {
"Hoteloption": [
{   
    "CityRating":[
    {'City': 'Bangkok','Rating':4.5},
    {'City': 'Phuket','Rating':4.5},
    {'City': 'Nonthaburi','Rating':4.5},
    {'City': 'Broc','Rating':4.5}]
}]
}}];

答案 3 :(得分:0)

不确定,但是maube

transform(value: any, args?: any): any {
    return JSON.parse(value);
}

如果你的数组真的必须是字符串