为了账号安全,请及时绑定邮箱和手机立即绑定

如何最轻松地将带有字符串的 JSON 转换为带有数组的 JSON?

如何最轻松地将带有字符串的 JSON 转换为带有数组的 JSON?

C#
慕运维8079593 2021-11-21 16:31:45
我需要编写一个称为public string PrepareForDeserialization(string json)转换 JSON 字符串的方法,如下所示:{"To":"name@company.com, name2@company.com, name3@company.com","CC":"namecc@company.com","BCC":""}到这样的 JSON 字符串:{"To":["name@company.com", "name2@company.com", "name3@company.com"],"CC":["namecc@company.com"],"BCC":[]}在我开始使用Substring()and解决这个问题之前Regex.Replace(),是否有某种更简单的 JSON 字符串到数组转换器可以使用,或者将带有字符串的序列化 JSON 字符串转换为带有字符串的序列化 JSON 字符串的最简单方法是什么?数组?
查看完整描述

2 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

您应该为此使用一些 JSON 库(例如Json.net)。这将解决在手动操作 JSON 字符串时可能会遗漏的许多陷阱。


var o1 = JsonConvert.Deserialize<JObject>(jsonstring);


//you can split by ' ' and ',' because email addresses won't contain any whitespaces. For other purposes you may need better splitting rules.

var to = o1.Value<string>("To").Split(new char[]{' ', ',"}, StringSplitOptions.RemoveEmptyEntries);

var cc = o1.Value<string>("CC").Split(new char[]{' ', ',"}, StringSplitOptions.RemoveEmptyEntries);

var bcc = o1.Value<string>("BCC").Split(new char[]{' ', ',"}, StringSplitOptions.RemoveEmptyEntries);

var outstring = JsonConvert.SerializeObject(new JObject{

   {"To", JArray.FromObject(to)},

   {"CC", JArray.FromObject(cc)},

   {"BCC", JArray.FromObject(bcc)},

});

请注意,没有错误处理。例如,如果原始字符串错过了三个列表之一,这将抛出。


查看完整回答
反对 回复 2021-11-21
?
倚天杖

TA贡献1828条经验 获得超3个赞

使用 Newtonsoft.Json


string strJson = @"{'To':'name @company.com, name2 @company.com, name3 @company.com','CC':'namecc @company.com','BCC':''}";

                dynamic jsonObject = JsonConvert.DeserializeObject(strJson);

                Dictionary<string, string[]> val = new Dictionary<string, string[]>();

                foreach (var prop in jsonObject)

                {

                    string name = prop.Name;

                    string[] datas = Convert.ToString(prop.Value).Split(',');

                    val.Add(name, datas);

                }


                string op = JsonConvert.SerializeObject(val);


查看完整回答
反对 回复 2021-11-21
  • 2 回答
  • 0 关注
  • 194 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信