unity json字符串判断是否有指定属性,并取出对应属性值
时间: 2025-06-28 09:11:37 浏览: 21
### 使用 `nullptr` 和处理 JSON 属性
在现代 C++ 中,推荐使用 `nullptr` 来表示空指针而不是传统的宏 `NULL`[^1]。这不仅提高了代码的安全性和可读性,还解决了类型安全方面的问题。
对于 Unity 中检查 JSON 字符串是否存在特定属性并获取其值的任务,可以利用 UnityEngine 的内置库 `JsonUtility` 或者更灵活强大的第三方库如 Newtonsoft.Json (也称为 Json.NET)。下面展示如何通过这两种方式实现目标:
#### 方法一:使用 `JsonUtility`
Unity 自带的序列化工具 `JsonUtility` 可以方便地解析简单的 JSON 数据结构。然而需要注意的是,此方法适用于较为基础的情况,并且要求类成员变量名严格匹配 JSON 键名称。
```csharp
using UnityEngine;
[System.Serializable]
public class MyData {
public string myProperty;
}
void CheckAndGetValue(string jsonString){
var data = JsonUtility.FromJson<MyData>(jsonString);
if (!string.IsNullOrEmpty(data.myProperty)){
Debug.Log($"Value of 'myProperty': {data.myProperty}");
}
}
```
这种方法简单易用,但对于复杂嵌套对象的支持有限。
#### 方法二:使用 Newtonsoft.Json 库
Newtonsoft.Json 提供了更为强大和灵活的功能来处理复杂的 JSON 结构。首先需要安装 NuGet 包管理器插件并将 Newtonsoft.Json 添加到项目依赖项中。
```csharp
using Newtonsoft.Json.Linq;
bool TryGetProperty(JToken token, string propertyName, out JToken value){
value = null;
try{
value = token[propertyName];
return value != null && !value.HasValues || value.Type != JTokenType.Null;
}catch(JsonException e){
Debug.LogError(e.Message);
return false;
}
}
// 示例调用
JObject jsonObject = JObject.Parse(jsonString);
if(TryGetProperty(jsonObject, "desiredPropertyName", out var result)){
Debug.Log(result.ToString());
}else{
Debug.LogWarning("'desiredPropertyName' does not exist or is null.");
}
```
上述代码片段展示了如何创建一个辅助函数 `TryGetProperty` 来判断指定键是否存在于给定的 JSON 对象内以及提取对应的值。如果找不到该键或它的值为空,则返回 `false` 并设置输出参数为默认状态;否则就成功赋值并返回 `true`。
阅读全文
相关推荐







