来自JSON.NET的Flush()无法按预期工作

时间:2017-08-08 10:02:39

标签: java c# android json .net-core

我基于用Java编写的服务器在.NET Core中编写服务器。在.net核心中我有:

<div class="circle1">
  <h2 class="Capital">P</h2>
  <span class="text">Publications</span>

</div>

在java中,服务器代码如下所示:

JsonSerializer serializer = new JsonSerializer();
JsonWriter writer = new JsonTextWriter(OutputStream);
writer.WriteStartArray();
serializer.Serialize(writer, result); //result = [{ "Success": true}
writer.Flush(); //Java client received message and generate error: Incomplete document

和生成错误的Java客户端:

Json Writer writer = new JsonWriter(new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8")));
writer.beginArray();
Result result = new Result();
gson.toJson(result, Result.class, writer);
writer.flush(); //Java client still waiting 

在Java中,一切正常,但在.net核心中却没有。我通过Wireshark检查了数据包,一切都已发送。当我调试客户端时,我有一个错误:jsonReader.beginArray(); result = gson.fromJson(jsonReader, Result.class); 。有什么不对?

1 个答案:

答案 0 :(得分:0)

难以找到解决方案。但整个昨天我花了调试器,我发现了一个问题。在java客户端中,我查看了'result'和'jsonReader'中的内容:

result = gson.fromJson(jsonReader, Result.class);

我发现jsonReader的缓冲区看起来像[{“Success”:true} 执行该行后,结果的缓冲区如[{“success”:false}。为什么?因为模型Result在Java中有字段调用'success'而不是'Success'。而.net核心Result类我刚刚添加了

[JsonProperty("success")]

并且问题消失了:)也许有一天它可以帮到某人。