格式化的Json Deserialize引发异常

时间:2019-02-25 11:07:28

标签: c# json json.net

我经历了一些对 json文件进行反序列化的工作,直到我意识到原因是该文件被格式化,美化,美化了。

使用Newtonsoft.Json库并调用

JsonConvert.DeserializeObject<myObject>(mystring);

throws a JsonSerializationException

{"Unexpected end when reading JSON. Path '', line 1, position 1."}

然后,当我重复该操作,但是使用相同文件的缩小,压缩等版本时,它就可以工作。

在两种情况下,是否都可以使用此libray并反序列化数据?

谢谢!

3 个答案:

答案 0 :(得分:0)

您的json有效,您的模型应该是这样

public class Step
{
    public int StepID { get; set; }
    public string Description { get; set; }
    public List<int> ShutMoves { get; set; }
    public List<int> FeatIDs { get; set; }
    public List<int> ExpSettings { get; set; }
}

public class Part
{
    public int PartID { get; set; }
    public string Description { get; set; }
    public bool Moving { get; set; }
    public List<int> FeatIDs { get; set; }
}

public class Feat
{
    public int FeatID { get; set; }
    public int CamID { get; set; }
    public int CamFeatID { get; set; }
    public int PartID { get; set; }
}

public class RootObject
{
    public List<Step> Steps { get; set; }
    public List<Part> Parts { get; set; }
    public List<Feat> Feats { get; set; }
}

答案 1 :(得分:0)

小例子-

public void JsonDeserializeTesting() {
    var testingModal = new TestingModal{Id = 1,Name = "Eminem",};
    var serializeObject = JsonConvert.SerializeObject(testingModal);
    var deserializeObject = JsonConvert.DeserializeObject<TestingModal>
    (serializeObject);
    Console.WriteLine($"{deserializeObject}");
}
public class TestingModal{
    public long Id { get; set; }
    public string Name { get; set; }
}

我希望这会为您提供有关如何使用反序列化的抽象视图。

答案 2 :(得分:0)

这是我的错误。我正在反序列化的字符串是通过使用ReaLine()获得的。所以我的代码只解析文件的第一行。

从流甚至File.ReadAllText中读取

ReadToEnd()即可解决问题。

谢谢您的帮助。