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

将字符串列表转换为方括号到 json

将字符串列表转换为方括号到 json

C#
慕妹3242003 2022-09-04 16:40:47
我正在尝试将转换后的字符串列表更新为JSON文件“列表”。我的字符串列表:var animals = new List<string>() { "bird", "dog" };使用此代码:string json = File.ReadAllText(filePath);dynamic jsonObj = Newtonsoft.Json.JsonConvert.DeserializeObject(json);var serializedObject = JsonConvert.SerializeObject(animals);jsonObj["animals"] = serializedObject;string output = Newtonsoft.Json.JsonConvert.SerializeObject(jsonObj, Newtonsoft.Json.Formatting.Indented);File.WriteAllText(filePath, output);旧的 JSON 文件:{  "animals": ["cat", "fox"]}新的 JSON 文件应为:{  "animals": ["bird", "dog"]}但我得到的是:{ "animals": "[\"bird\", \"dog\"]"}任何帮助是值得赞赏的!谢谢
查看完整描述

2 回答

?
翻过高山走不出你

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

你的是一个字符串,但你根本不需要它。serializedObject


由于您不会反序列化为具体类型,因此您的只是一个 .所以你需要这个:jsonObj["animals"]JArray


dynamic jsonObj = JsonConvert.DeserializeObject(json);

jsonObj["animals"] = JArray.FromObject(animals);

现在,您可以通过 将其序列化回去。JsonConvert.SerializeObject


查看完整回答
反对 回复 2022-09-04
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

如果这是一个常规对象,则只需设置属性的值即可。如果它是一个ExpandoObject,那也同样有效。 虽然生成一个 Json.Net 类型,其数据必须 Json.NET 类型有效。jsonObjanimalsJsonConvert.DeserializeObject(json)


您可以将列表内容作为JArray进行评估,例如:


var animals = new List<string>() { "bird", "dog" };


dynamic jsonObj = Newtonsoft.Json.JsonConvert.DeserializeObject("{'moo':1}");


jsonObj.animals= new JArray(animals);

var result=JsonConvert.SerializeObject(jsonObj);

这将是:result


{"moo":1,"animals":["bird","dog"]}

仅当文件包含 JSON 字典时,添加新属性才有效。如果您知道该文件将始终包含字典,则可以将反序列化结果强制转换为 JObject,并通过 JObject 的索引器添加新属性:


var jsonObj = (JObject)JsonConvert.DeserializeObject("{'moo':1}");

jsonObj["animals"]= new JArray(animals);


查看完整回答
反对 回复 2022-09-04
  • 2 回答
  • 0 关注
  • 163 浏览

添加回答

举报

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