首页 > 解决方案 > 如何读取看起来像 JSON 的自定义格式

问题描述

从文件导入数据时,这是结果之一:

{
id: 1234,
name: "Store name",
street: "Street",
house_number: "19",
postal_code: "12346",
city: "Brussel",
country: "NL",
formatted_opening_times: {2=>[09:00 - 22:00] 4=>[09:00 - 22:00] 6=>[10:00 - 18:00] 1=>[09:00 - 22:00] 5=>[09:00 - 20:00] 3=>[09:00 - 22:00] 0=>[09:00 - 22:00]},
open_now: true
}

我们能够显示数据,但在formatted_opening_times. 我们想将其显示为:

周一:09:00 - 02:00
周二:09:00 - 22:00
...

我试图解析 JSON 中的数据并显示内容:

var opening_times = JSON.parse(storeSpecs.data.formatted_opening_times);
var content = "Monday: " 
content += ${opening_times[0][2]}

但导致错误控制台说

未捕获的 SyntaxError:位置 1 处的 JSON 中的意外数字

希望有人可以提供帮助。

标签: javascriptjson

解决方案


那不是 JSON。一个技巧是将“=>”替换为“:”,将“[”或“]”替换为引号。

var org = "{2=>[09:00 - 22:00] 4=>[09:00 - 22:00] 6=>[10:00 - 18:00] 1=>[09:00 - 22:00] 5=>[09:00 - 20:00] 3=>[09:00 - 22:00] 0=>[09:00 - 22:00]}"
var jsonStr = org.replace(/([0-9]+)=>/g, '"$1":')
                 .replace(/\[/g,'"')
                 .replace(/\]/g, '",')
                 .replace(/,\}$/, '}')
var res = JSON.parse(jsonStr);

推荐阅读