我正在尝试将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.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]
}
我该怎么做?预先感谢。
答案 0 :(得分:3)
尝试一下:
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);
答案 1 :(得分:3)
如果您不想创建一个特殊的类来表示您的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));
或这样设置现有的(实际上也可以添加):
jObj["test"] = JToken.FromObject(ts);
答案 2 :(得分:0)
您可以创建一个类来反序列化文件的内容,然后将数据与现有数据一起添加并将其重写到文件中。下面是示例代码
创建课程
public class DataToWrite
{
public List<ulong> whitelistedChannels { get; set; }
}
然后在您的代码中
var json = File.ReadAllText(@"file.json");
var jsonObj = JsonConvert.DeserializeObject(json);
jsonObj.whitelistedChannels.AddRange(ts);
string output = JsonConvert.SerializeObject(jsonObj, Formatting.Indented);
File.WriteAllText(configFile, output);
文件中的初始数据
{
"whitelistedChannels": []
}
将数据写入文件后
{
"whitelistedChannels": [
749076952626757682,
849076952626757682,
949076952626757682
]
}