PHP JSON到C#对象如何反序列化JSON
如何反序列化在C#PHP JSON到C#对象如何反序列化JSON
{ “会计师” 这个JSON字符串:{ “系统标识”: “1”, “FIRST_NAME”: “测试” , “姓氏”: “测试”, “产品类型”: “样本” }}
我试了一下,到目前为止使用JsonConvert.DeserializeObject
var jsonObj = JsonConvert.DeserializeObject<AccountantData>(responseMessage);
这是我的模型
public class AccountantData
{
[JsonProperty("accountant")]
public List<UserData> Accountant { get; set; }
}
public class UserData
{
public UserData(int sysId, string firstName, string lastName, string productType)
{
SystemId = sysId;
FirstName = firstName;
LastName = lastName;
ProductType = productType;
}
[JsonProperty("sysid")]
public int SystemId { get; set; }
[JsonProperty("first_name")]
public string FirstName { get; set; }
[JsonProperty("last_name")]
public string LastName { get; set; }
[JsonProperty("product_type")]
public string ProductType { get; set; }
}
但这会导致一个错误
类型的异常 'Newtonsoft.Json.JsonSerializationException' 发生在Newtonsoft.Json.dll但在用户代码没有处理
其他信息:不能反序列化当前JSON对象(例如{ “名称”: “值”})成型 'System.Collections.Generic.List`1 [MyApp.UserData]',因为类型要求JSON阵列(例如[1,2,3]),以正确地反序列化。
要修复此错误,请将JSON更改为JSON数组(例如[1,2,3])或更改反序列化类型,以使其成为正常的.NET类型(例如,不是像整数这样的基本类型,不是像数组或List的集合类型),可以从JSON对象反序列化。 JsonObjectAttribute也可以添加到类型中,以强制它从JSON对象反序列化。
你的JSON输入字符串是不正确的。 AccountantData
使用List
UserData
的(阵列)。试试这个:
{
"accountant":[
{
"sysid":"1",
"first_name":"Test",
"last_name":"Test",
"product_type":"Sample"
}
]
}
更新: 如果你总是会拥有UserData
一个对象,那么你可以改变你的AccountantData
类为:
public class AccountantData
{
[JsonProperty("accountant")]
UserData Accountant { get; set; }
}
此外,如果你永远有单UserData
对象,你有JSON数据的控制,那么你可以更新您的JSON数据输入到如下简单的格式:
{
"sysid":"1",
"first_name":"Test",
"last_name":"Test",
"product_type":"Sample"
}
,然后反序列化这样的:
var jsonObj = JsonConvert.DeserializeObject<UserData>(responseMessage);
我使用json_encode得到rowdata后。我需要将其格式化为数组,当我json_encode? –
如果我正确理解你的问题,不要认为它与json_encode有关。如果您的JSON数据总是只有一个UserData对象,那么您可以更新您的AccountantData类。我已经用解释更新了我的答案。 –