【问题标题】:Parse download of JSON data from URL解析从 URL 下载的 JSON 数据
【发布时间】:2018-06-24 20:08:29
【问题描述】:

我有一些从 URL 下载为 .gz 文件的 JSON 数据,然后我解压缩并将 JSON 作为字符串读取

我正在尝试遍历记录

JArrayJObject 似乎都不起作用

任何想法如何逐个对象地读取这些数据?

{"user_id":"25c6b8080aa26","email":"XXZZZZ@gmail.com","roles":"Manager"}
{"user_id":"1a25c6b8080b6ac","email":"XXXXX@gmail.com"}

【问题讨论】:

  • 当你说and neither jArray or JObject seem to work时,你能提供你试过的代码吗?
  • 这不是有效的 JSON,您不能对其进行反序列化。您缺少开始的[、结束的] 和元素之间的,,因为它是一个有效的数组。您可以使用this website 来测试 JSON 字符串的正确性

标签: c# arrays json json.net


【解决方案1】:

提供的示例不是有效的 JSON 文档,但似乎包含 JSON 对象的 sn-ps。

假设每个记录/对象被限制在一行,您可以逐行读取文件并转换对象

提供者数据将解析为

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) {
    //...
}

【讨论】:

    猜你喜欢
    • 2015-05-29
    • 1970-01-01
    • 1970-01-01
    • 2020-07-01
    • 2019-08-01
    • 2016-12-05
    • 2015-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多