我如何使用Xamarins System.JSON

本文关键字:System JSON Xamarins 何使用 | 更新日期: 2023-09-27 17:50:44

我试图将JSON字符串反序列化为对象。我正在使用系统。Xamarin中的JSON库,这是目前为止的内容:

ServerConnection.Receive (bb);
data = Encoding.ASCII.GetString (bb);
try{
  MemoryStream stream = new MemoryStream(bb);
  JsonValue jsonCounters = JsonObject.Load(stream);
}
  catch(Exception error){
  Console.WriteLine ("ERROR: " + error.Message);
}

我遇到的问题是jsonCounters总是null。我理解JSON。. NET是一个更好的库,但是使用它需要升级我的帐户,而这是我还没有真正准备好做的事情。

编辑:


我点击了JamesMontemagno提供的链接。然后,我在我的应用程序中写入了以下内容:

ServerConnection.Receive (bb);
data = Encoding.ASCII.GetString (bb);
try{
  JsonValue value = JsonValue.Parse(data);
  JsonObject jsonCounters = value as JsonObject;
}
  catch(Exception error){
  Console.WriteLine ("ERROR: " + error.Message);
}

唯一的问题是,当我创建字节数组时,我接收到:

byte[] bb = new byte[1024]

问题是当我收到并尝试解析JSON时,似乎JSON长度和字节数组长度之间的差异并没有丢失,它只是转换为JSON末尾的空白,这导致JsonValue。解析失败,ERROR: JSON输入中有额外字符。在第1行,第642列。我尝试了data = data. trim(),但是什么也没做。

我如何使用Xamarins System.JSON

JamesMontemagno的链接是正确的。它向我展示了JsonObject的正确用法。在我能够让Json至少尝试解析之后,我需要删除末尾的空白。我使用以下代码创建了一个新的字节数组来解析。

ServerConnection.Receive (rawRecieve);
int i = rawRecieve.Length - 1;
while (rawRecieve [i] == 0) {
  --i;
}
byte[] cleanRecieve = new byte[i+1];
Array.Copy(rawRecieve, cleanRecieve, i+1);

我从以下代码中偷来的:从c#中删除字节数组的尾空