【发布时间】:2022-01-02 19:54:54
【问题描述】:
我在尝试将 yaml 转换为 json 时需要帮助,它会将所有属性都传递给字符串,并且无法识别 bool 或 integer 字段。
我在 c# 中使用 YamlDotNet 库。如果有人可以帮助我,我将不胜感激
// convertir string to stream
byte[] ArchivoConvertidobyteArray = Encoding.ASCII.GetBytes(archivoRuta);
var vigenciaYaml = (new StreamReader(new MemoryStream(ArchivoConvertidobyteArray)));
vigenciaJson = ConvertirYamlAJson(vigenciaYaml);
public static string ConvertirYamlAJson(TextReader yml)
{
var deserializer = new DeserializerBuilder().Build();
var yamlObject = deserializer.Deserialize(yml);
var serializer = new SerializerBuilder().JsonCompatible().Build();
string json = serializer.Serialize(yamlObject);
return json;
}
Yaml 文件
# Definición del contrato
CodigoTipoContrato: BAS2
Descripcion: BASICO DOS
Empresa: DECORÉ
# Definición de conceptos del contrato
TiposConcepto:
- CodigoTipoConcepto: VPAG
Descripcion: VALOR A PAGAR
NaturalezaContable: debito
PerfilContabilizacion: PCGRAL
GrupoImpuestosArticulo: ''
CodigoMoneda: COP
PermiteCruce: true
预期结果
{
"CodigoTipoContrato": "BAS2",
"Descripcion": "BASICO DOS",
"Empresa": "DECORÉ",
"TiposConcepto": [
{
"CodigoTipoConcepto": "VPAG",
"Descripcion": "VALOR A PAGAR",
"NaturalezaContable": "debito",
"PerfilContabilizacion": "PCGRAL",
"GrupoImpuestosArticulo": "",
"CodigoMoneda": "COP",
"PermiteCruce": true
}
]
}
原来是这样的
{
"CodigoTipoContrato": "BAS2",
"Descripcion": "BASICO DOS",
"Empresa": "DECORÉ",
"TiposConcepto": [
{
"CodigoTipoConcepto": "VPAG",
"Descripcion": "VALOR A PAGAR",
"NaturalezaContable": "debito",
"PerfilContabilizacion": "PCGRAL",
"GrupoImpuestosArticulo": "",
"CodigoMoneda": "COP",
"PermiteCruce": "true"
}
]
}
【问题讨论】:
-
我建议你用文字而不是图片写一个样本,帮助者不要浪费时间为你重新创建样本。显示你的代码将是必须的,类,代码 c#...
-
早上好,Frenchy 我无法分享代码,因为它显示的错误是通过控制台显示的,发送捕获要容易得多。
-
什么是您的起始文件 yaml...?在您的示例 json 中是一个字符串,因此要解析您的 json,您需要使用解析器 newtonjson,例如,您必须声明一个类来解析你的 json 字符串
-
问题已修改。
-
是的,但是如果我添加一个实体,它会很好地转换它,但如果我删除它,它会将所有内容都转换为字符串
标签: c# json yaml yamldotnet