在Nancy中解析List <class>时出现JsonReaderException

时间:2016-02-20 07:26:05

标签: c# json.net nancy

我正在使用构建P2P网络。 到目前为止一切都很好。现在我正在构建我的fingertables并希望将它们解析为使用给其他客户端。但是我收到以下错误:

Newtonsoft.Json.JsonReaderException: Unexpected character encountered while parsing value

我的要求:

using (HttpClient client = new HttpClient())
{
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    HttpResponseMessage response = await client.GetAsync($"http://localhost:{port}/Successor/{id}");
    var chord = await response.Content.ReadAsAsync<ChordNode>();
    return chord;
}

刚刚返回:

Get["Successor/{id}", true] = async (x, ct) =>
{
    return _chordNode;
};

我的班级ChordNode工作正常,直到我添加了FingerTable列表。它看起来如下:

public class ChordNode
{

    public NodeInfo Info { get; set; }

    public NodeInfo Successor { get; set; }
    public NodeInfo Predecessor { get; set; }
    public List<ChordNode> FingerTable { get; set; }

    ..... and other stuff thats not important.

如果我将FingerTable设为私有,它会再次起作用,但之后我不会将FingerTable返回给其他客户端。

在StackOverflow上提问时还不错。所以任何反馈都会很好:)

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。 在我删除了所有ASYNC之后,我收到了一条更好的消息,告诉我我错误地使用了这部分。

Get["Successor/{id}", true] = async (x, ct) =>

我在方法调用中使用了我的参数x.id作为int,它没有给我任何反馈。因此,在将其解析为int之后,它解决了所有问题。

感谢所有好的反馈。