I need help when trying to convert a yaml to json it is passing all the properties to string, and it does not recognize the bool or integer fields.
I am using the YamlDotNet library, in c #. If anyone can help me I would appreciate it
// 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 file
# 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
What is expected
{
"CodigoTipoContrato": "BAS2",
"Descripcion": "BASICO DOS",
"Empresa": "DECORÉ",
"TiposConcepto": [
{
"CodigoTipoConcepto": "VPAG",
"Descripcion": "VALOR A PAGAR",
"NaturalezaContable": "debito",
"PerfilContabilizacion": "PCGRAL",
"GrupoImpuestosArticulo": "",
"CodigoMoneda": "COP",
"PermiteCruce": true
}
]
}
This is how it is turning
{
"CodigoTipoContrato": "BAS2",
"Descripcion": "BASICO DOS",
"Empresa": "DECORÉ",
"TiposConcepto": [
{
"CodigoTipoConcepto": "VPAG",
"Descripcion": "VALOR A PAGAR",
"NaturalezaContable": "debito",
"PerfilContabilizacion": "PCGRAL",
"GrupoImpuestosArticulo": "",
"CodigoMoneda": "COP",
"PermiteCruce": "true"
}
]
}
CodePudding user response:
without entity or class, you have to force the type of value in 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 result:
{
"CodigoTipoContrato": "BAS2",
"Descripcion": "BASICO DOS",
"Empresa": "DECOR?",
"TiposConcepto": [
{
"CodigoTipoConcepto": "VPAG",
"Descripcion": "VALOR A PAGAR",
"NaturalezaContable": "debito",
"PerfilContabilizacion": "PCGRAL",
"GrupoImpuestosArticulo": "",
"CodigoMoneda": "COP",
"PermiteCruce": true
}
]
}
you have the same trick with int: !!int