我正在寻找一个JSON分析器,该分析器可以让我从大型JSON文件(大小为几百MB)中遍历JSON对象。我从Json.NET尝试了JsonTextReader,如下所示:
JsonTextReader reader = new JsonTextReader(new StringReader(json));
while (reader.Read())
{
if (reader.Value != null)
Console.WriteLine("Token: {0}, Value: {1}", reader.TokenType, reader.Value);
else
Console.WriteLine("Token: {0}", reader.TokenType);
}
但是它在令牌之后返回令牌。
如果我需要整个对象而不是令牌,有没有更简单的方法?
假设您有一个与此类似的json数组:
[{"text":"0"},{"text":"1"}......]
我将为对象类型声明一个类
public class TempClass
{
public string text;
}
现在,反序列化部分
JsonSerializer ser = new JsonSerializer();
ser.Converters.Add(new DummyConverter<TempClass>(t =>
{
//A callback method
Console.WriteLine(t.text);
}));
ser.Deserialize(new JsonTextReader(new StreamReader(File.OpenRead(fName))),
typeof(List<TempClass>));
还有一个伪JsonConverter类来拦截反序列化
public class DummyConverter<T> : JsonConverter
{
Action<T> _action = null;
public DummyConverter(Action<T> action)
{
_action = action;
}
public override bool CanConvert(Type objectType)
{
return objectType == typeof(TempClass);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
serializer.Converters.Remove(this);
T item = serializer.Deserialize<T>(reader);
_action( item);
return null;
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
}
因此,我得到了一个庞大的JSON文件,我需要从中提取数据。JSON格式如下所示: 为了阅读它,我试图创建一个类来映射键和对象。类似这样的东西,类似于这个问题: 但是我被数组卡住了,它包含了更多的对象,而不仅仅是简单的基本数据类型。 JSON文件很大,并且在其中到处都有类似类型的项。我对此相当陌生,可能会犯一些错误。任何朝着正确方向的帮助都是感激的。谢了!
问题内容: 我正在尝试使用该模块从python脚本读取json文件。经过一番谷歌搜索后,我发现以下代码: json文件的路径和名称在哪里。我收到以下错误: 问题答案: 该代码用作变量名。它将阴影您导入的模块引用。为变量使用其他名称。 除此之外,代码在接受字符串的同时传递文件对象。 传递文件内容: 或使用接受类似文件的对象。
问题内容: 只是因为一个简单,易于表达的陈述使我的脸上有些错误,所以我有点头疼。 我有一个名为strings.json的json文件,如下所示: 我现在想读取json文件。我发现了以下这些语句,但是不起作用: 控制台上显示的错误是这样的: 已编辑 从更改为 并得到了这个: 问题答案: 该方法(“ load”中没有“ s”)可以直接读取文件: 您正在使用方法,该方法仅用于 字符串 参数。 编辑:新消
我有一个名为Strings.json的json文件,如下所示: 我想读取json文件,现在仅此而已。我发现了这些说法,但它不起作用: 控制台上显示的错误是: 已编辑 从更改为 得到了这个:
一个看起来简单、容易的陈述却让我犯了一些错误。 我有一个名为strings.json的JSON文件,如下所示: 我想阅读JSON文件,目前仅此而已。我发现了这些语句,但它不起作用: 控制台上显示的错误如下: 如果我使用<code>json。加载而不是<code>json。加载,我得到以下错误:
问题内容: 我有点头疼,只是因为一个简单,易于表达的陈述使我的脸上有些错误。 我有一个名为的文件,如下所示: 我现在想读取文件。我发现了以下这些语句,但是不起作用: 控制台上显示的错误是这样的: 已编辑 从更改为 并得到了: 问题答案: 该方法( 中没有 )可以直接读取文件: 你正在使用方法,该方法仅用于字符串参数。 编辑:新消息是一个完全不同的问题。在这种情况下,该文件中存在一些无效的。为此,我