gpt4 book ai didi

javascript - 无法使用 yaml.js 将 YAML 解析为 JSON

转载 作者:行者123 更新时间:2023-11-29 14:41:07 25 4
gpt4 key购买 nike

我真的是 Javascript 的新手,所以如果这个问题如此简单,请不要笑得太大声。我必须将 JSON 对象解析为 YAML,然后使用新编辑的 YAML(用户将提供给我们),将其解析为 JSON 对象。
我选择由同一作者编写的 yaml.js 和 json2yaml.js。
问题是当我从 JSON 对象解析为 YAML 时,一切都很好。例如,解析后 json2yaml.js 给我的是:

---
state:
id: 0
name: "CA"
folder:
id: 1202
name: "ABC"
type:
typeName: "firstlevel"
defaultthings: null
mainType: "metropolis"
id: 207
name: "CA"
owner:
id: 202
name: null
errorMessage: ""
isError: false
county:
-
id: 0
name: "_1"
folder: ""
city:
Type: "urban"
id: 17206
name: "El Segundo"
numberofinstances: 1
errorMessage: ""
isError: false

但是当我使用 yaml.js 将其解析为 JSON 时,出现无法解析 yaml 文件的错误。我认为这是因为错误的 generate yaml 函数,但不知道如何使用它。
有没有人面对这个,你知道这个有什么解决办法吗???

======
[更新] 提供我用来解析的代码片段从 JSON 到 YAML

"use strict";             
var YAML = window.YAML , json, data , yml;
json = JSON.stringify(ko.toJS(finalData), null, 2);
data = JSON.parse(json);
yml = YAML .stringify(data);
return yml;

从 YAML 到 JSON

var YAML = window.YAML, json, data;
data = YAML.parse(yml); // yml text we got above
json = JSON.stringify(data);
var jsonObject = JSON.parse(json);

其实,我不认为这是语法错误,因为我在网站上使用了默认代码块:http://jsontoyaml.com/#browser-javascript .

最佳答案

似乎 yaml 的格式有点不对(检查 http://www.yamllint.com/ ),它不应该在 --- 标记之后有额外的缩进。我看了一下 json2yaml.js 中的源代码,idenLevel 始终是 '\s\s'

indentLevel = indentLevel.replace(/$/, '  ')

你不需要它,如果它不是第一行(在标记之后),你只需要它要解决这个问题,您可以在 json2yaml.js 的第 7 行添加以下代码

var handlers, indentLevel = '', firstLine = true; // add firstLine check

然后在 x.forEach 之前的第 38 行和 Object.keys(x).forEach 之前的第 69 行,添加此检查

if (firstLine) {
firstLine = false;
} else {
indentLevel = indentLevel.replace(/$/, ' ')
}

您的 yaml 现在应该是有效的,并且可以解析回 JSON。希望对您有所帮助。

关于javascript - 无法使用 yaml.js 将 YAML 解析为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38179270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com