YamlDotNet 在 C# 中将 YAML 转换为 JSON
YamlDotNet Convert YAML to JSON in C#
我在尝试将 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"
}
]
}
没有实体或class,你必须在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: !!bool true
json 结果:
{
"CodigoTipoContrato": "BAS2",
"Descripcion": "BASICO DOS",
"Empresa": "DECOR?",
"TiposConcepto": [
{
"CodigoTipoConcepto": "VPAG",
"Descripcion": "VALOR A PAGAR",
"NaturalezaContable": "debito",
"PerfilContabilizacion": "PCGRAL",
"GrupoImpuestosArticulo": "",
"CodigoMoneda": "COP",
"PermiteCruce": true
}
]
}
你对 int 有同样的技巧:!!int
我在尝试将 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"
}
]
}
没有实体或class,你必须在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: !!bool true
json 结果:
{
"CodigoTipoContrato": "BAS2",
"Descripcion": "BASICO DOS",
"Empresa": "DECOR?",
"TiposConcepto": [
{
"CodigoTipoConcepto": "VPAG",
"Descripcion": "VALOR A PAGAR",
"NaturalezaContable": "debito",
"PerfilContabilizacion": "PCGRAL",
"GrupoImpuestosArticulo": "",
"CodigoMoneda": "COP",
"PermiteCruce": true
}
]
}
你对 int 有同样的技巧:!!int