【发布时间】:2023-03-11 14:45:01
【问题描述】:
我正在将一个 C# 项目导入 Unity。 Newtonsoft json 库在 C# 项目(作为 Nugget 包)中运行良好,但在 Unity(作为资产商店包)中会引发异常。我正在使用最新的软件包和以下语法:
dynamic myObj = JsonConvert.DeserializeObject(jsonString)
dynamic myObj2 = myObj.myObj2 ;
Unity 中的 Newtonsoft 库抛出异常(第 2 行):
RuntimeBinderException: 'Newtonsoft.Json.Linq.JObject' does not contain a definition for 'myObj2 '
我的数据格式(简体):
{
"myObj2": [
{
"name": "name1",
"parameters": [
{
"paramName" : "parameter1",
"type": "Bool",
"value": "false"
},
{
"paramName" : "parameter2",
"type": "GameObject",
"value": "someGameObjectName"
}
]
}
]
}
绕过这个问题的好方法是什么?
【问题讨论】:
-
好吧,你的 json 字符串是否代表一个 json 对象,这个 json 对象是否有一个名为“myObj2”的键(区分大小写!)?如果是,请尝试
var x = JsonConvert.DeserializeObject(jsonString); var y = x["myObj2"];。不确定根本原因,但可能值得尝试在此处避免dynamic。 -
你能提供你的json数据吗?
-
你通常不需要做JsonConvert.DeserializeObject
(jsonString); -
我将添加数据、var 并指定类型由于某种原因也无法正常工作...
-
如果您使用
var方法而不是dynamic,您会得到什么?