【问题标题】:How to parse specific object in angular or javascript?如何解析角度或javascript中的特定对象?
【发布时间】:2019-07-27 18:55:29
【问题描述】:

我们将如何在 Angular 或 javascript 中解析以下类型的对象,可能使用搜索循环或解析?

我想获取标题值并将其分配给标题,因为您可以看到标题的值是对象:

{'title': 'Hey', 'instruction': 'Take a sad song a…75, 'sub_title': 'Jude', 'timelimit': '01:05:01'}

而不是您在示例中看到的“嘿”(与第二个对象相同)。有没有办法做到这一点?

JSON 对象数组格式:

[  
   {  
      id:0,
      title:"{'title': 'Hey', 'instruction': 'Take a sad song a…75, 'sub_title': 'Jude', 'timelimit': '01:05:01'}"
   },
   {  
      id:1,
      title:"{'title': 'Assessment', 'instruction': 'Jude', 'cr…71, 'sub_title': 'Test', 'timelimit': '06:25:08'}"
   }
]

期望的输出:

[  
   {  
      id:0,
      title:"Hey"
   },
   {  
      id:1,
      title:"Assessment"
   }
]

【问题讨论】:

  • 不太清楚你要做什么,你能解释一下吗?在你的第一个 JSON sn-p 中,title 是一个字符串而不是一个对象,在第二个 sn-p 中,一个包含两个元素的数组,title 是一个对象,你想做什么?
  • 请说明您想要达到的目标
  • 我已经更新了我的问题
  • 您的标题值未正确字符串化....检查您的标题
  • 有没有使用该格式的解决方案>?

标签: javascript arrays angularjs json object


【解决方案1】:

确保您的 json 格式正确 - 内部双引号,外部单引号。

这样

'{"title": "Hey", "instruction": "Take a sad song a…75", "sub_title": "Jude", "timelimit": "01:05:01"}'

那么你可以简单地做。

let jsonString = '{"title": "Hey", "instruction": "Take a sad song a…75", "sub_title": "Jude", "timelimit": "01:05:01"}';
let title = JSON.parse(jsonString).title;
console.log(title);

【讨论】:

  • 上面的例子已经是我得到的响应,我可以改变格式。
  • 第二个例子'instruction': 'Jude', 'cr…71, 'sub_title'肯定是无效的json,可以确认这是你得到的响应吗?
  • 我从一个 api 得到那个数据,这就是响应数据
  • 我猜你是直接复制的,如开发者工具中所示。问题是它不会在那里显示完整的响应,因为数据可能太长,所以当您复制时,您只复制了部分响应并且格式太无效。
【解决方案2】:

var jsonObj = [  
   {  
      id:0,
      title:"{'title': 'Hey', 'instruction': 'Take a sad song a…75, 'sub_title': 'Jude', 'timelimit': '01:05:01'}"
   },
   {  
      id:1,
      title:"{'title': 'Assessment', 'instruction': 'Jude', 'cr…71, 'sub_title': 'Test', 'timelimit': '06:25:08'}"
   }
];


var updatedJsonObj = jsonObj.map( obj => { 
  return {
      ...obj, 
      title: JSON.parse(obj.title).title
  } 
});

console.log(updatedJsonObj);

//updatedJsonObj will have your required format

【讨论】:

  • @JhonCaylog 感谢提及,更正了答案
  • 位置 1 的 JSON 中的意外标记 '
  • @JhonCaylog 您提供的 JSON 有问题您有正确的 json 吗?例如:“{'title': 'Hey', 'instruction': 'Take a sad song a...75, 'sub_title': 'Jude', 'timelimit': '01:05:01'}” 缺少单曲引用和另一个完全错误的 json,除非您提供正确的 json,否则任何解决方案都无法处理该数据集。请更正json对象
  • 这是我从 api 兄弟那里得到的响应数据
  • 有没有办法可以掩盖丢失的单引号并使其成为正确的 json?无需手动操作
【解决方案3】:

我们正在执行以下步骤

  1. 遍历数组
  2. 对于每个对象,标题字段都不是有效的 JSON。使用title.replace(/'/g, '"') 使其有效。然后解析 JSON。
  3. 然后将解析后的 JSON 的标题分配给对象的标题

这里是代码

arr = [  
   {  
      id:0,
      title:"{'title': 'Hey', 'instruction': 'Take a sad song a…75', 'sub_title': 'Jude', 'timelimit': '01:05:01'}"
   },
   {  
      id:1,
      title:"{'title': 'Assessment', 'instruction': 'Jude', 'sub_title': 'Test', 'timelimit': '06:25:08'}"
   }
]

arr =  arr.map((e)=> { e.title = JSON.parse(e.title.replace(/'/g, '"')).title; return e; })
// expected result is in arr

.

【讨论】:

  • JSON 中第 117 位的意外标记 t
  • 它在浏览器控制台中按预期工作,您可以在控制台中尝试它
  • 嗨,兄弟,我有一个问题
  • 问题是什么?请问
【解决方案4】:

正如其他人所说,您的 json 无效,但由于您提到它是您从后端获得的并且您无法更改它,因此我建议将您的标题视为字符串并使用字符串操作来获取所需的值。

例如,您可以使用以下内容获取 ID 和标题

<div ng-repeat="item in data">
  {{item.id}} - 
  {{item.title.split('\'')[3]}}
</div>    

Demo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 1970-01-01
    • 2020-05-29
    相关资源
    最近更新 更多