【问题标题】:How to convert a string with delimiter to json string in c# [duplicate]如何在c#中将带分隔符的字符串转换为json字符串[重复]
【发布时间】:2021-04-29 12:11:11
【问题描述】:

我有一个字符串

string myString = "KTC|2020|MPD|18/01/2021|I|O|B|ALST|";

我需要转换成以下格式。

string convertedJsonString="{"compCode":"KTC","accountYear":"2020","shipmentNumber":"MPD","shipmentDate":"18/01/2021","shipmentType":"I","shipmentCategory":"M","fromLevelCode":"B","fromLocationCode":"ALST"}";

当我尝试编写如下代码时,

string[] inputArray = input.Split("|");
string jsonString = @"{"+ " compCode "+ ":" + inputArray[0];
jsonString += "," + "accountYear" + ":" + inputArray[1] + "}";

我得到如下字符串

{ compCode :KTC,accountYear:2020} 格式不符合要求。

您能告诉我一些关于我们如何实现这一目标的想法吗?

【问题讨论】:

  • 你的问题是你没有转义引号来转义它们写:string jsonString = "{\"compCode\": ....
  • 转换为对象和序列化是最干净的,但如果你想坚持这种方法,你应该检查一下,因为你错过了“ - stackoverflow.com/questions/3458046/…

标签: c# json


【解决方案1】:

尝试生成一个匿名类,然后将其序列化:

var json = new { 
compCode = inputArray[0],
accountYear = inputArray[1],
shipmentNumber = inputArray[2],
shipmentDate=inputArray[3],
shipmentType = inputArray[4],
shipmentCategory=inputArray[5],
fromLevelCode=inputArray[6],
fromLocationCode=inputArray[7]
}

string jsonString = JsonConvert.SerializeObject(json);

【讨论】:

  • 这非常有效。谢谢
  • @Edwin 欢迎您,请不要忘记标记为答案。
【解决方案2】:

如果您已经知道每个 json 元素的键名,则可以创建一个映射数组并对其进行迭代。

string[] a = { "compCode", "accountYear" };
var json = "{";
var stringList = "KTC|2020|MPD|18/01/2021|I|O|B|ALST|".Split('|');
for (int i = 0; i < a.length; i++) { json += @",\"{a[i]}\": \"{stringList[i]}\"" ; }
json += "}";

【讨论】:

    猜你喜欢
    • 2019-11-18
    • 2014-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 2011-08-31
    • 2020-11-27
    相关资源
    最近更新 更多