Json.NET布尔型JToken无法反序列化自己的序列化

时间:2018-11-05 12:52:57

标签: c# json.net

序列化仅具有布尔值的JToken时,首字母大写。由于该大写字母的原因,反序列化结果字符串失败。

以下测试由于以下原因而失败:“分析值时遇到意外字符:T.Path”,第0行,位置0。”

using System;
using FluentAssertions;
using Newtonsoft.Json.Linq;
using Xunit;

public class SimpleTests
{
    [Fact]
    public void TestJTokenBoolean()
    {
        var token = JToken.Parse("true");
        token.Type.Should().Be(JTokenType.Boolean);

        Action deserialize = () => JToken.Parse(token.ToString());
        deserialize.Should().NotThrow();
    }
}

做错什么了吗?还是可能是错误?

1 个答案:

答案 0 :(得分:0)

我找到了答案。我以错误的方式进行序列化。该测试有效:

[Fact]
public void TestJTokenBoolean2()
{
    var token = JToken.Parse("true");
    token.Type.Should().Be(JTokenType.Boolean);

    JToken token2 = null;
    using (var stringWriter = new StringWriter())
    {
        token.WriteTo(new JsonTextWriter(stringWriter));
        Action deserialize = () => token2 = JToken.Parse(stringWriter.ToString());
        deserialize.Should().NotThrow();

        token2.Type.Should().Be(JTokenType.Boolean);
    }
}