编辑:想删除此问题,但我不允许。当我从某个统一编辑器窗口复制粘贴有效json到C#文件中进行调试时,将其格式化为奇怪的是,为什么我的问题中的json看起来不正确,并且永远无法转换为字符串[] ...在编辑器中,json字符串是正确的"[\"none\"]"
,所以我什至没有注意到复制粘贴时它损坏了...即使将代码粘贴到stackoverflow中也没有。第二个人指出它看起来不对劲,我知道是什么引起了问题。您现在可以停止投入我的意思了-我不允许删除问题。
原始问题:
我正在尝试将JSON字符串转换为C#Sting []
using Newtonsoft.Json;
private string[] list;
list = JsonConvert.DeserializeObject<string[]>("\"[(\"none(\"](\"");
Debug.Log(list);
但由于错误而失败:
ArgumentException:无法将System.String强制转换或转换为 System.String []。 Newtonsoft.Json.Utilities.ConvertUtils.EnsureTypeAssignable (System.Object值,System.Type initialType,System.Type targetType) (位于<97722d3abc9f4cf69f9e21e6770081b3>:0)
我也尝试过
private List<string> list;
list = JsonConvert.DeserializeObject<List<string>>("\"[(\"none(\"](\"");
由于错误而失败
ArgumentException:无法将System.String强制转换或转换为 System.Collections.Generic.List`1 [System.String]。 Newtonsoft.Json.Utilities.ConvertUtils.EnsureTypeAssignable (System.Object值,System.Type initialType,System.Type targetType) (位于<97722d3abc9f4cf69f9e21e6770081b3>:0)
我是否需要另一个函数,或者它与我的数据类型错误有关?
OBS:我正在统一编写脚本,所以我不确定是否有所有可用的“正常” C#库/东西。 Newtonsoft软件包来自统一资产商店。
答案 0 :(得分:4)
您的Json字符串格式错误。
var jsonString = "[\"none\"]";
var deserializedList = JsonConvert.DeserializeObject<List<string>>(jsonString);
var backToJsonString = JsonSerializer.ToJsonString(deserializedList, StandardResolver.Default);