【发布时间】:2015-12-25 14:00:09
【问题描述】:
在我的应用程序中,我有一个List<Users>
[{
"Id": "1",
"Name": "last, first",
"Skills": [{"SN":"20","SL":"12"},{"SN":"197","SL":"09"}]
},
{
"Id": "2",
"Name": "Black, Jack",
"Skills": [{"SN":"40","SL":"07"},{"SN":"199","SL":"05"}]
},
{
"Id": "3",
"Name": "Rooney, Wayne",
"Skills": [{"SN":"40","SL":"11"},{"SN":"201","SL":"07"}]
}]
我需要将这些数据转换成一个字符串,格式如下:
“1/last, first/20-12,197-09;2/Black, Jack/40-07,199-05;3/Rooney, 韦恩/40-11,201-07"
我试图序列化这个对象以获得一个 JSON 字符串:
public IHttpActionResult ImportUsers([FromBody]IEnumerable<Users> newUsers)
{
string agents = JsonConvert.SerializeObject(newUsers);
return Ok(agents);
}
并得到一个结果:
"[{\"Id\":\"1\",\"姓名\":\"last, 第一\",\"技能\":[{\"SN\":\"20\",\"SL\":\"12\"},{\"SN\":\"197\", \"SL\":\"09\"}]},{\"Id\":\"2\",\"Name\":\"Black, 杰克\",\"技能\":[{\"SN\":\"40\",\"SL\":\"07\"},{\"SN\":\"199\", \"SL\":\"05\"}]},{\"Id\":\"3\",\"姓名\":\"鲁尼, 韦恩\",\"技能\":[{\"SN\":\"40\",\"SL\":\"11\"},{\"SN\":\"201\", \"SL\":\"07\"}]}]"
比我尝试反序列化这个字符串来获取每个变量的值
var dict = JsonConvert.DeserializeObject<dynamic>(agents);
List<string> results = new List<string>();
foreach (var d in dict)
{
var skills = d["Skills"];
string skill = string.Join(",", skills);
string list = d["Id"] + "/" + d["Name"] + "/" + skill;
results.Add(list);
}
string result = string.Join(";", results);
并得到这个字符串:
"1/last, first/{\r\n \"SN\": \"20\",\r\n \"SL\": \"12\"\r\n},{\ r\n \"SN\": \"197\",\r\n \"SL\": \"09\"\r\n};2/布莱克, 杰克/{\r\n \"SN\": \"40\",\r\n \"SL\": \"07\"\r\n},{\r\n \"SN\": \"199\",\r\n \" SL\": \"05\"\r\n};3/鲁尼,韦恩/{\r\n \"SN\": \"40\",\r\n \"SL\": \"11\"\r\n},{\r\n \"SN\": \"201\",\r\n \"SL\": \"07\"\r\n}"
所以它更像我需要的,但我仍然对技能列表中的值有疑问。如何像使用 Id 和 Name 列一样从中获取值?也许我需要再次反序列化这部分或使用一些正则表达式来实现我需要的字符串?
【问题讨论】: