C# JSONVERT帮助读取文件
我试图读取这个json文件,问题是我没有得到任何信息,而且C# JSONVERT帮助读取文件,c#,json.net,C#,Json.net,我试图读取这个json文件,问题是我没有得到任何信息,而且1357总是在变化 这是文件的一部分 { "result": { "1357": { "Random": "4NUX4oFJZEHLbXH5ApeO4", "Random2": "Co04DEVlxkKgpou-6kej", 我用来阅读它的班级 using System; using System.IO; using Newtonsoft.Json; namesp
1357
总是在变化
这是文件的一部分
{
"result": {
"1357": {
"Random": "4NUX4oFJZEHLbXH5ApeO4",
"Random2": "Co04DEVlxkKgpou-6kej",
我用来阅读它的班级
using System;
using System.IO;
using Newtonsoft.Json;
namespace MyNamespace
{
public class ReadRandom
{
public static ReadRandom Fetch(string filename)
{
TextReader reader = new StreamReader(filename);
string json = reader.ReadToEnd();
reader.Close();
ReadRandomResult AssetClassInfoResult = JsonConvert.DeserializeObject<ReadRandomResult>(json);
return AssetClassInfoResult.result;
}
[JsonProperty("Random")]
public string Random { get; set; }
[JsonProperty("Random2")]
public string Random2 { get; set; }
protected class ReadRandomResult
{
public ReadRandom result { get; set; }
}
}
}
我正在读“图标url”
下面有一些东西。
很抱歉,我以前以为我不需要它,所以没有把它全部贴出来
当在示例中使用这个时,您发布了一个更改,将密钥更改为正确的密钥,我仍然崩溃。您发布的json似乎无效。解析器无法读取它 ---编辑: 至少你需要
{
"result": {
"1357": {
"Random": "4NUX4oFJZEHLbXH5ApeO4",
"Random2": "Co04DEVlxkKgpou-6kej"
}
}
}
问题是在
结果
属性和随机
和随机2
对象之间有一个额外的“层”。看起来您想要的是:
class ReadRandomResult
{
public Dictionary<string, ReadRandom> Result { get; set; }
}
test.json的内容
:
{
"result": {
"1357": {
"Random": "4NUX4oFJZEHLbXH5ApeO4",
"Random2": "Co04DEVlxkKgpou-6kej"
}
}
}
输出:
4NUX4oFJZEHLbXH5ApeO4
您忽略了您拥有
1357
这一事实。假设您拥有以下JSON:
{
"result": {
"1357": {
"Random": "4NUX4oFJZEHLbXH5ApeO4",
"Random2": "Co04DEVlxkKgpou-6kej"
}
}
}
您的结果
不是ReadRandom
,而是字典
这一条应该有效:
public class ReadRandom
{
public static Dictionary<string, ReadRandom> Fetch(string filename)
{
TextReader reader = new StreamReader(filename);
string json = reader.ReadToEnd();
reader.Close();
return JsonConvert.DeserializeObject<ReadRandomResult>(json).result;
}
[JsonProperty("Random")]
public string Random { get; set; }
[JsonProperty("Random2")]
public string Random2 { get; set; }
protected class ReadRandomResult
{
public Dictionary<string, ReadRandom> result { get; set; }
}
}
// Usage example:
string random = ReadRandom.Fetch(@"C:\filename.txt")["1357"].Random;
公共类ReadRandom
{
公共静态字典获取(字符串文件名)
{
TextReader=新的StreamReader(文件名);
字符串json=reader.ReadToEnd();
reader.Close();
返回JsonConvert.DeserializeObject(json).result;
}
[JsonProperty(“随机”)]
公共字符串随机{get;set;}
[JsonProperty(“Random2”)]
公共字符串Random2{get;set;}
受保护类读取结果
{
公共字典结果{get;set;}
}
}
//用法示例:
string random=ReadRandom.Fetch(@“C:\filename.txt”)[“1357”].random;
我的观点是:在模型类中实现
Fetch
,不是一个好主意。最好实现类似于ReadRandomParse
的东西,它将返回ReadRandomResult
检查这个链接,如果json字符串有动态键,它们将使用Idictionary,然后进行迭代。然后从剩下的字符串中,您可以再次反序列化到您想要的对象@ramafe他想说“发布完整的JSON文件”。这是不完整的原因吗?例如,如果它是一个配置文件,您可以编辑它。如果它来自api,请联系api开发人员。因为无效的json可能不会对任何人有利。我只发布了它的顶部,因为它很大,我也从互联网上下载了它,我不能更改它或不需要更改它。我只需要从iti中读取几行。我尝试时,似乎总是在反序列化对象
上崩溃this@ramafe:没有比“撞车”更多的细节再也帮不了你了。我建议您在问题中提供一个简短但完整的示例,以及崩溃的详细信息(完整堆栈跟踪)。还在努力锻炼吗why@ramafe当前位置如果没有一个简短但完整的示例,我们将无法进一步帮助您。我编辑了我的答案,展示了一个简短但完整的例子,它确实有效。好的,我想我已经解决了问题,你的例子是有效的,我得到的回复与你说的一样。我认为问题在于我读取的json文件更大。这是我返回的sting的开始,读取我的“{\r\n\t\”result\”:{\r\n\t\t\“1357\”:{\r\n\t\t\“Random\”:
,这是我从您的示例“{\r\n\”result\”:{\r\n\“1357\”:{\r\n\“Random\”:
4NUX4oFJZEHLbXH5ApeO4
{
"result": {
"1357": {
"Random": "4NUX4oFJZEHLbXH5ApeO4",
"Random2": "Co04DEVlxkKgpou-6kej"
}
}
}
public class ReadRandom
{
public static Dictionary<string, ReadRandom> Fetch(string filename)
{
TextReader reader = new StreamReader(filename);
string json = reader.ReadToEnd();
reader.Close();
return JsonConvert.DeserializeObject<ReadRandomResult>(json).result;
}
[JsonProperty("Random")]
public string Random { get; set; }
[JsonProperty("Random2")]
public string Random2 { get; set; }
protected class ReadRandomResult
{
public Dictionary<string, ReadRandom> result { get; set; }
}
}
// Usage example:
string random = ReadRandom.Fetch(@"C:\filename.txt")["1357"].Random;