5 回答

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超6個(gè)贊
如果我這樣做,我會(huì)得到 和 的正確Email值Password:
public class User_
{
public string Email { get; set; }
public string Password { get; set; }
}
public class RootObject
{
public User_ User_ { get; set; }
}
class Program
{
static void Main(string[] args)
{
string jsonString = "{\"User_\":{\"Email\":\"test@test.com\",\"Password\":\"pass1\"}}";
RootObject request = JsonConvert.DeserializeObject<RootObject>(jsonString.ToString());
Console.WriteLine("Email: {0}", request.User_.Email);
Console.WriteLine("Password: {0}", request.User_.Password);
Console.ReadLine();
}
}
你可以看到它在這里工作

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊
[JsonProperty("KeyName")]
當(dāng)您的鍵名不是純字母時(shí),為什么不使用。
[JsonProperty("KeyName")]
為您提供反序列化此類(lèi)包含一些鍵的 json 的優(yōu)勢(shì)
用戶(hù)_
用戶(hù)$
@用戶(hù)
*用戶(hù)&
還有很多
只需將此屬性添加到您的類(lèi)屬性中即可
[JsonProperty("User_")] public User User { get; set; }
這使您的屬性名稱(chēng)保持簡(jiǎn)單且更具可讀性
所以最后為你的 json
{
"User_":
{
"Email_":"test@test.com",
"Password_":"pass1"
}
}
添加后的所有類(lèi)JsonProperty看起來(lái)像
public class RootObject
{
[JsonProperty("User_")]
public User User { get; set; }
}
public class User
{
[JsonProperty("Email_")]
public string Email { get; set; }
[JsonProperty("Password_")]
public string Password { get; set; }
}
用法:
RootObject request = JsonConvert.DeserializeObject<RootObject>(json.ToString());
Console.WriteLine(request.User.Email);
Console.WriteLine(request.User.Password);
輸出:

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超6個(gè)贊
直接反序列化類(lèi)的對(duì)象時(shí),JSON 中不需要類(lèi)名。另一方面,如果您反序列化上面給出的 JSON,則使用 RootObject 反序列化
var user = JsonConvert.DeserializeObject<RootObject>(json.ToString()).User_;
和
public class RootObject
{
public User_ User_ { get; set; }
}
或者
而是反序列化以下 JSON:
{
"Email":"test@test.com",
"Password":"pass1"
}

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個(gè)贊
我相信你的 c# 類(lèi)中有 2 個(gè)問(wèn)題
在你的
RootObject
課上你必須使用public User_ User{get;set;}
當(dāng)您序列化 Json 時(shí),您必須使用。
User_ request = JsonConvert.DeserializeObject<RootObject>(json.ToString());
這將解決您的問(wèn)題。

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個(gè)贊
主要問(wèn)題是您的 RootObject 被序列化為新對(duì)象的屬性名稱(chēng),字符串為空作為值。許多序列化服務(wù)器端的結(jié)果。
而且您可以輕松處理這些問(wèn)題,一旦密碼/電子郵件更改,您將需要一個(gè)新密碼/電子郵件,以下課程將僅適用于此確切的 Json 響應(yīng)。
public partial class DontDoThis
{
[JsonProperty("{\"Email_\":\"test@test.com\",\"Password_\":\"pass1\"}")]
public string EmailTestTestComPasswordPass1 { get; set; }
}
為了解決這個(gè)問(wèn)題,您需要:
- 更改代碼服務(wù)器端以提供正確的結(jié)果。
- 字符串操作以刪除和取消轉(zhuǎn)義結(jié)果。
-反序列化一次并再次反序列化。
- 5 回答
- 0 關(guān)注
- 211 瀏覽
添加回答
舉報(bào)