如何将json字符串转换为yaml

时间:2017-10-31 12:55:38

标签: c# json .net-core yaml

我有以下代码段:

string stringXDoc = JsonConvert.SerializeObject(ConnectedItemOperations.GetConnectedItemById(id).Edits.EditableData);
var json = JsonConvert.DeserializeObject(stringXDoc);
  

这是获取错误的文件:InvalidOperationException:Too   遍历对象图时的多次递归。有2000多个   产品



<product>
<code></code>
<ws_code></ws_code>
<barcode></barcode>
<supplier_code></supplier_code>
<name></name>
<cat1name></cat1name><cat1code></cat1code>
<cat2name></cat2name><cat2code></cat2code>
<cat3name></cat3name><cat3code></cat3code>
<category_path></category_path>
<stock></stock>
<price_list></price_list>
<price_list_campaign></price_list_campaign>
<price_special_vat_included></price_special_vat_included>
<price_special></price_special>
<price_special_rate></price_special_rate>
<price_credit_card></price_credit_card>
<currency></currency>
<vat></vat>
<brand></brand>
<model></model>
<desi></desi>
<width></width>
<height></height>
<deep></deep>
<weight></weight>
<detail></detail>
<images><img_item type_name=""></img_item><img_item type_name=""></img_item><img_item type_name=""></img_item><img_item type_name=""></img_item></images>
<subproducts>
<subproduct><VaryantGroupID></VaryantGroupID>
<code></code>
<ws_code></ws_code>
<type1></type1>
<type2></type2>
<barcode></barcode>
<stock></stock>
<desi></desi>
<price_list></price_list>
<price_special></price_special>
<supplier_code></supplier_code>
</subproduct><subproduct><VaryantGroupID></VaryantGroupID>
<code></code>
<ws_code></ws_code>
<type1></type1>
<type2></type2>
<barcode></barcode>
<stock></stock>
<desi></desi>
<price_list></price_list>
<price_special></price_special>
<supplier_code></supplier_code>
</subproduct><subproduct><VaryantGroupID></VaryantGroupID>
<code></code>
<ws_code></ws_code>
<type1></type1>
<type2></type2>
<barcode></barcode>
<stock></stock>
<desi></desi>
<price_list></price_list>
<price_special></price_special>
<supplier_code></supplier_code>
</subproduct><subproduct><VaryantGroupID></VaryantGroupID>
<code></code>
<ws_code></ws_code>
<type1></type1>
<type2></type2>
<barcode></barcode>
<stock></stock>
<desi></desi>
<price_list></price_list>
<price_special></price_special>
<supplier_code></supplier_code>
</subproduct></subproducts>
.
.
.
</product>
&#13;
&#13;
&#13;

我想将json变量转换为yaml。 stringXDoc一直不一样,所以我不能为DeserializeObject<>创建类或者我可以吗?有没有办法将此变量转换为yaml

1 个答案:

答案 0 :(得分:0)

最简单的方法是使用YamlDotNet库。这是将您的对象转换为YAML格式的代码示例:

var yourObject = ConnectedItemOperations.GetConnectedItemById(id).Edits.EditableData;
var serializer = new SerializerBuilder().Build();
var yamlString = serializer.Serialize(yourObject);

我使用以下代码对其进行了测试:

class User
{
    public string Name { get; set; }
    public Car[] Cars { get; set; }
}

class Car
{
    public string Make { get; set; }
    public int Year { get; set; }
}

var user = new User
{
    Name = "Me",
    Cars = new Car[]
    {
        new Car { Make = "Car1", Year = 2000 }, 
        new Car { Make = "Car2", Year = 2017 }
    }
};
var serializer = new SerializerBuilder().Build();
var asYaml = serializer.Serialize(user);

这会生成以下YAML字符串:

  

姓名:我

     

汽车:

     
      
  • 制作:Car1

         

    年份:2000

  •   
  • 制作:Car2

         

    年份:2017

  •