【问题标题】:how to convert json string to yaml如何将json字符串转换为yaml
【发布时间】:2018-04-12 15:46:27
【问题描述】:

我有以下代码段:

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>

我想将 json 变量转换为yaml。 stringXDoc 并非始终相同,因此我无法为DeserializeObject&lt;&gt; 创建课程,或者我可以吗?有没有办法将此变量转换为yaml

【问题讨论】:

标签: c# json .net-core yaml


【解决方案1】:

最简单的方法是使用 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

【讨论】:

  • OP 没有对象,他有字符串
  • @Eldho 他确实有一个对象,他在他的第一行代码中序列化它:string stringXDoc = JsonConvert.SerializeObject(THE_OBJECT)
  • 是的,您的代码运行良好。但是当我使用 throw 时: InvalidOperationException: Too much recursion when traversing the object graph(my json string data is 10mb+)
  • @t.YILMAZ 您能否提供您的数据的结构?另外,你能把物体分成更小的部分吗?例如,获取EditableData的前x个项目。
  • @Abbas 不确定当您在另一个答案中被标记时是否收到通知,但仅供参考,OP 为您提供了更多信息(在另一个答案中,希望很快会编辑到问题中)
猜你喜欢
  • 2020-01-20
  • 2020-03-30
  • 1970-01-01
  • 2011-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多