将 C# 中的 Newtonsoft.Json.Linq.JObject 序列化为 byte[]

问题描述

在 C# 应用程序中,我在某个时候接收二进制数据,这些数据被序列化为具有结构的 JObject

{
  "0": 255,"1": 216,"2": 255,"3": 224,"4": 0,"5": 16,.
.
.
"12345" : 255

}

,所以它总是 {"index" : value}。 编辑:json 只是一个例子,JObject 实际上有 12345 个 JToken 类型的孩子,其中每个 JToken 都有名称“索引”和值 JValue(实际二进制值)。

我需要将此 JObject 反序列化为 byte[],仅存储值。除了循环遍历对象并将值一个一个地存储在字节数组中之外,还有什么聪明的方法可以做到这一点?

解决方法

您要查找的代码是:

jObject.Properties().Select(p => (byte) p.Value).ToArray();

但我还有两个问题:

  1. 您真的需要将其从二进制转换为 JSON 吗?不能直接反序列化成对象吗?

  2. 这显然是一个数组,为什么你的 JSON 不是这样的数组:

    [ 255,216,... ]