反序列化 Json C# 时为空 class
Null class when deserializing Json C#
我有这个PHP
if ($result->num_rows === 1) {
$sql = ("SELECT username, email, plan, activationdate, terminationdate FROM users WHERE username = '$username' LIMIT 1");
$res = mysqli_query($conn,$sql);
if ($res->num_rows === 1) {
while($row = mysqli_fetch_object($res)){
$arr = array( $row);
echo json_encode($arr);
哪个 returns 这个 json 正确 [{"username":"xxxxx","email":"xxxxxx","plan":"0","activationdate":"" ,"终止日期":""}]
现在在 C# 中我尝试反序列化使用
List<Information> resinfo = JsonConvert.DeserializeObject<List<Information>>(str2);
和 returns 空值
注意图片中的Null result but the json string is retunrning value as intended Json string
这是我的 class
public class Information
{
public static string username { get; set; }
public static string email { get; set; }
public static string plan { get; set; }
public static string activationdate { get; set; }
public static string terminationdate { get; set; }
}
当我尝试反序列化到 class 时,为什么我得到 null 以及如何正确反序列化?
值得一提的是,我尝试了这个var json = JsonConvert.DeserializeObject<List<Information>>(str2);
,结果相同
因为你的Information
class里面的所有属性都是static
。删除静态关键字并重试。
JsonConvert.DeserializeObject
将仅设置实例属性,因此它们不能声明为静态。
执行后查看 removedFines
变量(如 your image)。
我有这个PHP
if ($result->num_rows === 1) {
$sql = ("SELECT username, email, plan, activationdate, terminationdate FROM users WHERE username = '$username' LIMIT 1");
$res = mysqli_query($conn,$sql);
if ($res->num_rows === 1) {
while($row = mysqli_fetch_object($res)){
$arr = array( $row);
echo json_encode($arr);
哪个 returns 这个 json 正确 [{"username":"xxxxx","email":"xxxxxx","plan":"0","activationdate":"" ,"终止日期":""}]
现在在 C# 中我尝试反序列化使用
List<Information> resinfo = JsonConvert.DeserializeObject<List<Information>>(str2);
和 returns 空值
注意图片中的Null result but the json string is retunrning value as intended Json string
这是我的 class
public class Information
{
public static string username { get; set; }
public static string email { get; set; }
public static string plan { get; set; }
public static string activationdate { get; set; }
public static string terminationdate { get; set; }
}
当我尝试反序列化到 class 时,为什么我得到 null 以及如何正确反序列化?
值得一提的是,我尝试了这个var json = JsonConvert.DeserializeObject<List<Information>>(str2);
,结果相同
因为你的Information
class里面的所有属性都是static
。删除静态关键字并重试。
JsonConvert.DeserializeObject
将仅设置实例属性,因此它们不能声明为静态。
执行后查看 removedFines
变量(如 your image)。