我基于用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);
。有什么不对?
答案 0 :(得分:0)
难以找到解决方案。但整个昨天我花了调试器,我发现了一个问题。在java客户端中,我查看了'result'和'jsonReader'中的内容:
result = gson.fromJson(jsonReader, Result.class);
我发现jsonReader的缓冲区看起来像[{“Success”:true} 执行该行后,结果的缓冲区如[{“success”:false}。为什么?因为模型Result在Java中有字段调用'success'而不是'Success'。而.net核心Result类我刚刚添加了
[JsonProperty("success")]
并且问题消失了:)也许有一天它可以帮到某人。