Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法隐式转换类型';乌龙[]和#x27;至';Newtonsoft.Json.Linq.JToken';_C#_Json - Fatal编程技术网

C# 无法隐式转换类型';乌龙[]和#x27;至';Newtonsoft.Json.Linq.JToken';

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[]保存到我的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]
}
我该怎么做?提前感谢。

试试这个:

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
  ]
}