在 Nancy 中解析 List<Class> 时出现 JsonReaderException
JsonReaderException when parsing List<Class> in Nancy
我正在用 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;
}
这只是 returns:
Get["Successor/{id}", true] = async (x, ct) =>
{
return _chordNode;
};
我的 class 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
返回给其他客户。
在 Whosebug 上提问仍然很陌生。所以任何反馈都会很好 :)
我找到了解决办法。
在我删除所有 ASYNC 后,我收到一条更好的消息,告诉我我用错了这部分。
Get["Successor/{id}", true] = async (x, ct) =>
我在方法调用中将参数 x.id 用作 int,但它没有给我任何反馈。因此,在将其解析为 int 后,它解决了所有问题。
感谢大家的好评。
我正在用 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;
}
这只是 returns:
Get["Successor/{id}", true] = async (x, ct) =>
{
return _chordNode;
};
我的 class 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
返回给其他客户。
在 Whosebug 上提问仍然很陌生。所以任何反馈都会很好 :)
我找到了解决办法。 在我删除所有 ASYNC 后,我收到一条更好的消息,告诉我我用错了这部分。
Get["Successor/{id}", true] = async (x, ct) =>
我在方法调用中将参数 x.id 用作 int,但它没有给我任何反馈。因此,在将其解析为 int 后,它解决了所有问题。
感谢大家的好评。