You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中JSON反序列化后UserData对象字段为空问题

问题根源

Unity自带的JsonUtility.FromJson不识别Newtonsoft.Json的[JsonProperty]特性。它会严格按照字段名的大小写匹配JSON中的键,你的类字段是UID、Email、Password(大驼峰),但JSON中的键是uid、email、password(全小写),导致无法匹配,所以字段保留默认值(0和null)。

解决方法

方法1:统一字段名与JSON键的大小写

修改类的字段名,使其和JSON中的键完全一致,同时移除[JsonProperty]特性:

[System.Serializable]
public class UserData
{
    public int uid;
    public string email;
    public string password;
}

这样JsonUtility.FromJson就能正确匹配并反序列化。

方法2:切换到Newtonsoft.Json(Json.NET)

如果你想保留类的大驼峰字段名和[JsonProperty]特性,可以使用Newtonsoft.Json进行反序列化:

  1. 先在Unity包管理器中安装"Newtonsoft Json"包(Window > Package Manager,搜索Newtonsoft Json)。
  2. 使用以下代码反序列化:
UserData parsedUserData = Newtonsoft.Json.JsonConvert.DeserializeObject<UserData>(stringUserData);

这也是之前功能正常时最可能使用的方案。

方法3:使用System.Text.Json(Unity 2020.1+)

如果你的Unity版本在2020.1及以上,可以用System.Text.Json配合[JsonPropertyName]特性:

using System.Text.Json.Serialization;

[System.Serializable]
public class UserData
{
    [JsonPropertyName("uid")] public int UID;
    [JsonPropertyName("email")] public string Email;
    [JsonPropertyName("password")] public string Password;
}

// 反序列化代码
UserData parsedUserData = System.Text.Json.JsonSerializer.Deserialize<UserData>(stringUserData);

内容的提问来源于stack exchange,提问作者amitklein

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 01:07:58