【问题标题】:Apply custom formatting to each JSON property对每个 JSON 属性应用自定义格式
【发布时间】:2018-07-02 01:14:29
【问题描述】:

ChoJSONWriter 或 Newtonsoft 支持是否将自定义格式应用于每个 JSON 属性。从数据源中提取数据后,我想将以下格式应用于每个 JSON 记录。

{
  "Place": "{0}",
  "SkuNumber": "SKU_{1}"
}

我可以通过检查每条记录并应用 String.Format 手动完成,但我不想重新发明轮子。

【问题讨论】:

  • 您能告诉我们您使用什么方法(动态/POCO)来创建 JSON 文件吗?示例代码有帮助。

标签: c# json.net choetl


【解决方案1】:

这是您可以使用 Cinchoo ETL 为每个成员添加自定义格式的方法

动态方法:

StringBuilder sb = new StringBuilder();

using (var w = new ChoJSONWriter(sb)
    .WithField("Place")
    .WithField("SkuNumber", valueConverter: (o) => String.Format("SKU_{0}", o.ToNString()))
    )
{
    dynamic o1 = new ExpandoObject();
    o1.Place = 1;
    o1.SkuNumber = 100;

    w.Write(o1);
}

Console.WriteLine(sb.ToString());

POCO:

public class PlaceObj
{
    public string Place { get; set; }
    public int SkuNumber { get; set; }
}

POCO 方法:

StringBuilder sb = new StringBuilder();

using (var w = new ChoJSONWriter<PlaceObj>(sb)
    .WithField(m => m.SkuNumber, valueConverter: (o) => String.Format("SKU_{0}", o.ToNString()))
)
{
    PlaceObj o1 = new PlaceObj();
    o1.Place = "1";
    o1.SkuNumber = 100;

    w.Write(o1);
}

Console.WriteLine(sb.ToString());

【讨论】:

  • 感谢您的回答,但解决方案需要通用,因为我不知道将返回哪些字段,并且字段列表仅在运行时可用,因为 DataSource 是一个 CSV 文件。
  • 你能发布一个带有输入和预期输出的示例代码吗?
猜你喜欢
  • 2020-02-06
  • 1970-01-01
  • 1970-01-01
  • 2015-01-18
  • 1970-01-01
  • 1970-01-01
  • 2016-09-08
  • 2010-09-23
  • 1970-01-01
相关资源
最近更新 更多