gpt4 book ai didi

c# - 将 JSON 字符串转换为 "complicated"类?

转载 作者:行者123 更新时间:2023-11-30 13:42:20 24 4
gpt4 key购买 nike

我有这个 JSON 字符串:

 {
"success":true,"user_id":"309","id":"309","sessId":false,"email":null,"name":"Mai Van Quan","username":"quanmv","role":"Reseller Admin","messages":"","org_name":null,"microPayNumber":"4949","microPayWord":"neocam","mobile":null,"permissions":{"ADD_CAMERA":true,
"REMOVE_CAMERA":true,
"EDIT_CAM_GENERAL":true,
"ACCESS_CAM_TECHNICAL":true,
"EDIT_CAM_PKG":true,
"PREVIEW_CAM":true
},"type":"sp","time":1279702793,"reseller":1,"status":"ok"}

我想使用 JSON.NET 将其转换为 C# 对象。 JSON.NET 可以将其转换为“泛型”对象,但我想将其转换为更具体的对象。我创建了这个类:

internal class User
{

public User(User u)
{
status = u.status;
id = u.id;
sessId = u.sessId;
email = u.email;
username = u.username;
role = u.role;
messages = u.messages;
org_name = u.org_name;
microPayNumber = u.microPayNumber;
microPayWorld = u.microPayWorld;
mobile = u.mobile;
permissions = u.permissions;
type = u.type;
time = u.time;
reseller = u.reseller;
status = u.status;
}

public bool successs { private set; get; }


public string user_id { private set; get; }
public string id { private set; get; }



public string name { private set; get; }
public bool sessId { private set; get; }
public string email { private set; get; }

public string username { private set; get; }

public string role { private set; get; }
public string messages { private set; get; }
public string org_name{ private set; get; }
public string microPayNumber { private set; get; }
public string microPayWorld { private set; get; }
public string mobile { private set; get; }
public Dictionary<string,bool> permissions { private set; get; }
public string type { private set; get; }

public int time { private set; get; }

public int reseller { private set; get; }
public string status { private set; get; }

}

但是 JSON.NET 似乎无法将给定的字符串转换为用户对象。我尝试了一些方法,但都失败了。

编辑:例如:

var ob = JsonConvert.DeserializeObject<User>(str);

异常:调用的目标抛出异常。

我怎样才能有效地将这个字符串转换为一个对象,因为有不止一种类型的字符串需要转换。

谢谢

最佳答案

几件小事,我让您的代码运行良好。

第一件事:您遇到了 NullReferenceException。您的 User 类的 permissions 属性从未实例化。 Json.NET 不会为您创建它。我将此默认构造函数添加到您的 User 类中:

public User()
{
permissions = new Dictionary<string, bool>();
}

第二件事:它不适用于 User 类属性的 privateinternal setter。一旦我将它们更改为 public,它就可以正常工作。

更新

又一个发现。如果您使用 [JsonObject] 属性标记您的 User 类,并且使用 [JsonProperty] 属性标记您的每个属性,那么您可以离开您的 setter 为 privateinternal,并且一切正常。

关于c# - 将 JSON 字符串转换为 "complicated"类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3297841/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com