我正在使用配置系统进行Minecraft帐户检查。 (请注意,检查器是用C#进行的,并且我将Newtonsoft.json用于配置系统)。 因此,我列出了一个列表:
List<string> config = File.ReadAllLines("config.json").ToList();
然后我编写了一个Parrallel.ForEach,其中包含该代码:
Parallel.ForEach(config, things =>
{
dynamic configJson = JsonConvert.DeserializeObject(things);
int threads = (int)configJson.threads;
string proxiesType = (string)configJson.proxiesType;
Console.WriteLine(threads + " - " + proxiesType);
});
config.json文件非常简单:
{
"threads": 200,
"proxiesType": "SOCKS5"
}
但是当我运行项目时,出现此错误:
Newtonsoft.Json.JsonSerializationException:'读取JSON时意外结束。路径”,第1行,位置1。'
我只需要帮助,因为我进行了搜索,但没有一个解决了这个问题。
答案 0 :(得分:3)
我不知道您为什么要这样处理。没有理由使用Parallel.ForEach
来解析JSON。
您现在正在做的是将JSON文件的每一行拖入列表,然后尝试解析每一行。
因此它尝试解析第1行,即{
。 {
不是有效的JSON对象。解析失败。
使用File.ReadAllText
将整个文件读取为单个字符串,然后解析该字符串。不需要任何形式的循环。
答案 1 :(得分:2)
您可以通过两种方式使用Json.NET处理JSON文件:
File.ReadAllText()
。string json = File.ReadAllText("config.json");
Config config = JsonConvert.DeserializeObject<Config>(json);
using (StreamReader file = File.OpenText("config.json"))
{
JsonSerializer serializer = new JsonSerializer();
Config config = (Config)serializer.Deserialize(file, typeof(Config));
}