C# 无法隐式转换类型';乌龙[]和#x27;至';Newtonsoft.Json.Linq.JToken';
我正在尝试将ulong[]保存到我的json文件中 这是我的代码:C# 无法隐式转换类型';乌龙[]和#x27;至';Newtonsoft.Json.Linq.JToken';,c#,json,C#,Json,我正在尝试将ulong[]保存到我的json文件中 这是我的代码: ulong[] ts = new ulong[3]; ts[0] = 749076952626757682 ts[1] = 849076952626757682 ts[2] = 949076952626757682 var json = string.Empty; json = File.ReadAllText(@"file.json"); dynamic jsonObj = JsonConvert.Des
ulong[] ts = new ulong[3];
ts[0] = 749076952626757682
ts[1] = 849076952626757682
ts[2] = 949076952626757682
var json = string.Empty;
json = File.ReadAllText(@"file.json");
dynamic jsonObj = JsonConvert.DeserializeObject(json);
jsonObj["whitelistedChannels"] = ts; //this is the line on which i'm getting the error
tring output = JsonConvert.SerializeObject(jsonObj, Formatting.Indented);
File.WriteAllText(configFile, output);
这是我的json
{
"test": []
}
我希望我的json文件如下所示:
{
"test": [749076952626757682,849076952626757682,949076952626757682]
}
我该怎么做?提前感谢。试试这个:
ulong[] ts = new ulong[3];
ts[0] = 749076952626757682;
ts[1] = 849076952626757682;
ts[2] = 949076952626757682;
var obj = new { test = ts };
//pick only one of the next two lines
var json = JsonConvert.SerializeObject(obj); //from Newtonsoft.Json
var json = JsonSerializer.Serialize(obj); //from System.Text.Json
File.WriteAllText("filename.json", json);
如果不想创建一个特殊类来表示json结构,可以反序列化到
JObject
,并使用Add
方法使用JToken.FromObject
添加新属性:
var jObj = JsonConvert.DeserializeObject<JObject>(json); // or use `JObject.Parse`
ulong[] ts = new ulong[3];
ts[0] = 749076952626757682;
ts[1] = 849076952626757682;
ts[2] = 949076952626757682;
jObj.Add("whitelistedChannels", JToken.FromObject(ts));
您可以创建一个类来反序列化文件的内容,然后使用现有数据添加数据并将其重写到文件中。下面是示例代码 创建一个类
public class DataToWrite
{
public List<ulong> whitelistedChannels { get; set; }
}
文件中的初始数据
{
"whitelistedChannels": []
}
将数据写入文件后
{
"whitelistedChannels": [
749076952626757682,
849076952626757682,
949076952626757682
]
}
你能展示给你标题中提到的错误的代码吗?@Sweeper jsonObj[“test”]=ts;字符串输出=JsonConvert.SerializeObject(jsonObj,Formatting.Indented);WriteAllText(配置文件,输出);你应该把这个问题考虑进去。此外,请显示所有必要的代码。什么是jsonObj?它来自哪里?为什么要反序列化空json,只将数据填充到结果对象中,只将其序列化回json?构建可以序列化的类,跳过整个反序列化部分,怎么样?一个简单的
JsonConvert.SerializeObject(new{test=ts})
将执行您想要的操作。它只保存ts[0]。“测试”:[749076952626757682]@Dakata为我测试。
{
"whitelistedChannels": []
}
{
"whitelistedChannels": [
749076952626757682,
849076952626757682,
949076952626757682
]
}