【问题标题】:Deserialize JSON from a large file [duplicate]从大文件反序列化 JSON [重复]
【发布时间】:2020-01-10 07:52:37
【问题描述】:

我正在尝试从 c# 读取一个大的 json 文件并对其进行反序列化:

// deserialize JSON directly from a file
using (StreamReader file = File.OpenText(@"C:\Users\hansi\Desktop\csvjson.json"))
{
    JsonSerializer serializer = new JsonSerializer();
    Product product2 = (Product)serializer.Deserialize(file, typeof(Product));
    Console.WriteLine(product2.Name);

}

但它只读取第一个对象然后关闭,有人对此有答案吗? 程序继续运行没有错误,它只读取我的 Json 文件中的第一个对象

示例 Json,它继续使用 150000 个产品:

{
    "Item No.": 1000,
    "Product Name": "Pendant, Brass",
    "Product Category": "Lig",
    "Type": "Pendant",
    "Collection": "Tynl",
    "Designer": "Paav",
    "Design": 1965,
    "Form": "",
    "Dimension": "",
    "Finish of Main Part": "",
    "New Arrival": "",
    "Tags": "",
    "Estimated Release Date": "Ready to Order",
    "EAN": 571090274,
    "Country": "",
    "Country Of Origin": "CN",
    "Custom Tariff Code": 940520,
    "Product Weight /Kg": "3,3",
    "Gross Weight /Kg": "5,1",
    "Gross Height /Meter": "0,35",
    "Gross Length /Meter": "0,53",
    "Gross Depth /Meter": "0,53",
    "Gross Volume /m3": "",
    "Cord length": "",
    "Max Watt": "",
    "Upholstery": "",
    "Price Group": "",
    "Glides": "",
    "EUR RRP.": 
  },
  {

【问题讨论】:

标签: c# json


【解决方案1】:

如果您无法更改 json 文件,请按照 @dbc 所说的操作并使用行分隔的 json 解析。

如果您可以通过用 [] 将其括起来将其格式化为适当的 json 数组。然后将代码更改为:

var products = serializer.Deserialize(file, type(List<Product>);

编辑:改成正确的 json 只会让你以后头疼

【讨论】:

  • 我使用在线转换器将excel转换为json....获取正确json的正确方法是什么?
  • 如果您有类似{}, {}, {} 的内容,您可以使用[{},{},{}]
  • 实际上是从 [] 开始的,只是将它们删除以查看是否有效
  • 这成功了!!!谢谢!
  • 那么 products 在一个数组中返回 17000 个对象,我如何从 product[0].name 中获取名称不起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-27
  • 1970-01-01
  • 2020-03-02
  • 2019-06-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多