Skip to content

Deserialization fails #43

@amacal

Description

@amacal

I am going to deserialize json files using the following program:

using System;
using System.IO;

namespace NetTest1
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var a = NetJSON.NetJSON.Deserialize<Solution.SolutionData>(File.ReadAllText(".solution.json"));
            var b = NetJSON.NetJSON.Deserialize<Project.ProjectData>(File.ReadAllText(".project1.json"));
            var c = NetJSON.NetJSON.Deserialize<Project.ProjectData>(File.ReadAllText(".project2.json"));
            var d = NetJSON.NetJSON.Deserialize<Project.ProjectData>(File.ReadAllText(".project3.json"));
        }
    }

    public class Solution
    {
        public class SolutionData
        {
            public FolderData folders { get; set; }
            public PackageData[] packages { get; set; }
        }

        public class PackageData
        {
            public string name { get; set; }
            public string version { get; set; }
            public string[] references { get; set; }
        }

        public class FolderData
        {
            public string output { get; set; }
            public string sources { get; set; }
            public string packages { get; set; }
        }
    }

    public class Project
    {
        public class ProjectData
        {
            public MetadataData metadata { get; set; }
            public String[] references { get; set; }
            public String[] dependencies { get; set; }
            public PackageData[] packages { get; set; }
        }

        public class MetadataData
        {
            public String type { get; set; }
        }

        public class PackageData
        {
            public String name { get; set; }
            public String version { get; set; }
        }
    }
}

The object b is invalid. It should contains only two references.
When deserializng to object d an exceptions is thrown.

System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.

   at ProjectDataClass.CreateClassOrDictProjectData(Char* , Int32& )
   at ProjectDataClass.ReadProjectData(String )
   at ProjectDataClass.Deserialize(String )
   at NetJSON.NetJSON.Deserialize[T](String json)
   at NetTest1.Program.Main(String[] args) in c:\Users\Adrian\Documents\SharpDevelop Projects\NetTest1\NetTest1\Program.cs:line 13

I suppose the problem is in encoding.
The files you can find here: https://github.com/amacal/Quality.Json/blob/issue/data.zip?raw=true

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions