如何使用 JSON 对象的特殊数据集反序列化文件



我正在尝试反序列化一个包含未用逗号分隔的 JSON 对象数据集的文件

{
"passages": [
         {
          "is_selected": 1, 
          "url": "http://someUrl.com", 
          "passage_text": "someTextHere"
         }, 
         {
          "is_selected": 0, 
          "url": "http://someUrl.com", 
          "passage_text": "someTextHere""
         }, 
            ], 
              "query_id": 9749, 
              "answers": ["Here is the answer"], 
              "query_type": "description", 
              "query": "Here is my query"
}
{
"passages": [
         {
          "is_selected": 0, 
          "url": "http://someAnotherUrl.com", 
          "passage_text": "someAnotherTextHere"
         }, 
         {
          "is_selected": 1, 
          "url": "http://someAnotherUrl.com", 
          "passage_text": "someAnotherTextHere""
         }, 
            ], 
              "query_id": 0564, 
              "answers": ["Here is the another answer"], 
              "query_type": "another description", 
              "query": "Here is my another query"
}

我正在尝试将此代码与Newtonsoft.JSON反序列化一起使用,但它返回异常

"Newtonsoft.Json.JsonSerializationException"类型为'Newtonsoft.Json.Json'的未处理异常.dll

附加信息:无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型"System.Collections.Generic.List'1[JsonParser.DataSet]",因为该类型需要 JSON 数组(例如 [1,2,3])才能正确反序列化。

public class DataSet
{
    public List<Passage> passages { get; set; }
    public int query_id { get; set; }
    public List<string> answers { get; set; }
    public string query_type { get; set; }
    public string query { get; set; }
    public int Count { get; internal set; }
}
public class Passage
{
    public int is_selected { get; set; }
    public Uri url { get; set; }
    public string passage_text { get; set; }
}
class Program
{
    public static string jsonFileLocation = @"C:my.json"; 
    static void Main(string[] args)
    {
        using (StreamReader file = File.OpenText(jsonFileLocation))
        {
            JsonSerializer serializer = new JsonSerializer();
            List<DataSet> data = (List<DataSet>)serializer.Deserialize(file, typeof(List<DataSet>));                                
        }
    }
}

我认为手动放置逗号和括号以使文件变为 JSON 格式不是一个好主意,因为该文件包含数千条记录。您知道如何解析和反序列化此文件吗?

如果文件一致,因为每个 JSON 节点都用换行符分隔,则可以首先将文件流式传输到 System.String 中,并替换以下各项的所有实例:

}
{

跟:

},
{

然后,反序列化 JSON 字符串。这只是一个想法。

相关内容

  • 没有找到相关文章

最新更新