【发布时间】:2022-01-22 23:22:51
【问题描述】:
我的 JSON 消息包含字符串、列表和嵌套字典的组合,如下所示。
message = {
"series":"A",
"series_color": ["red","blue","green"],
"parts":{
"part1":{"id-01":"contextA", "id-02":"contextB", "id-03":"contextC"},
"part2":{"id-01":"contextA", "id-02":"contextB", "id-03":"contextC"}
}
}
这是在 Unity 的 C# 脚本中收到的,我使用以下方法反序列化:
// Translates Byte into String
var Message = System.Text.Encoding.Default.GetString(e.Message);
// Translates String into Object and stores in Dictionary
Dictionary<string, object> MessageDICT = JsonConvert.DeserializeObject<Dictionary<string, object>>(Message);
从这里我可以打印出前两条消息series 和series_color。
// Series
object series= MessageDICT["series"];
print(series);
// Series Color
object series_color = (JArray)MessageDICT["series_color"])[0]
print(series_color)
问题出现在我尝试解压缩嵌套字典 parts 的内容时,因为它的意外值(例如“{”)我无法解压缩它。
我知道有一些手动方法可以尝试将“{”替换为“[”并将其用作数组,以及创建一个类来读取 JSON(显示有关 Unity 主线程的错误)但是这些不是我正在寻找的解决方案。
有什么方法可以解压所有这些吗?
【问题讨论】:
-
您能详细解释一下您遇到问题的地方吗?
parts属性应反序列化为另一个Dictionary<string,object>