我有一些JSON数据,这些数据是从URL作为 .gz 文件下载的,然后解压缩,并以字符串形式读取JSON
我试图遍历记录
但是JArray
或JObject
都不起作用
有什么想法如何逐个对象读取此数据吗?
{"user_id":"25c6b8080aa26","email":"XXZZZZ@gmail.com","roles":"Manager"}
{"user_id":"1a25c6b8080b6ac","email":"XXXXX@gmail.com"}
答案 0 :(得分:1)
提供的示例不是有效的JSON文档,但似乎包含JSON对象的摘要。
假设每个记录/对象都限于一行,则可以逐行读取文件并转换对象
提供商数据将解析为
public class user {
public string user_id { get; set; }
public string email { get; set; }
public string roles { get; set; }
}
然后可以使用以下命令对解压缩的文件进行反序列化
public class MyParser {
public IEnumerable<T> Parse<T>(string path) {
var lines = File.ReadLines(path);
foreach (var line in lines) {
var record = JsonConvert.DeserializeObject<T>(line);
yield return record;
}
}
}
然后获得所需的对象就像
var path = "path to decompressed file";
var parser = new MyParser();
var users = parse.Parse<user>(path);
foreach(var user in users) {
//...
}