为什么 JsonSerializer 给空?
Why does JsonSerializer give empty?
鉴于此 class,我正在尝试序列化但它不起作用。
using System.Text.Json;
public class Service
{
public Service() { }
public string service;
public string description;
}
Service c = new Service();
c.description = "desc";
c.service = "serv";
string x = JsonSerializer.Serialize<Service>(c);
调试我看到 x == "{}"。我错过了什么?
C#.net 核心 3.1
您缺少 setter 和 getter
public class Service
{
public Service() { }
public string service {get; set;}
public string description {get; set;}
}
public class Service
{
public Service() { }
public string SomethingElse { get; set; }
public string Description { get; set; }
}
关于你的一些事情 class。
1) 您的属性需要 getter 和 setter(正如其他人指出的那样)
2) C# 最佳实践是将 class 属性的首字母大写。
3) 您真的不想使用与 class 同名的 属性。
Service c = new Service
{
Description = "desc",
SomethingElse = "serv"
};
string x = JsonConvert.SerializeObject(c);
此代码为您提供 x
:
{"SomethingElse":"serv","Description":"desc"}
请注意,当您创建一个 class 的新实例,然后立即填充它并为属性赋值时,最好使用 Object Initializer 方法。
所以不是这个:
Service c = new Service();
c.description = "desc";
c.service = "serv";
最好这样做:
Service c = new Service
{
Description = "desc",
SomethingElse = "serv"
};
这是一个正确的例子:
using Newtonsoft.Json;
using System;
using Microsoft;
public class Program
{
public static void Main()
{
Service c = new Service();
c.description = "desc";
c.service = "serv";
string json = JsonConvert.SerializeObject(c, Formatting.Indented);
Console.WriteLine(json);
}
public class Service
{
public Service() { }
public string service;
public string description;
}
}
鉴于此 class,我正在尝试序列化但它不起作用。
using System.Text.Json;
public class Service
{
public Service() { }
public string service;
public string description;
}
Service c = new Service();
c.description = "desc";
c.service = "serv";
string x = JsonSerializer.Serialize<Service>(c);
调试我看到 x == "{}"。我错过了什么?
C#.net 核心 3.1
您缺少 setter 和 getter
public class Service
{
public Service() { }
public string service {get; set;}
public string description {get; set;}
}
public class Service
{
public Service() { }
public string SomethingElse { get; set; }
public string Description { get; set; }
}
关于你的一些事情 class。
1) 您的属性需要 getter 和 setter(正如其他人指出的那样)
2) C# 最佳实践是将 class 属性的首字母大写。
3) 您真的不想使用与 class 同名的 属性。
Service c = new Service
{
Description = "desc",
SomethingElse = "serv"
};
string x = JsonConvert.SerializeObject(c);
此代码为您提供 x
:
{"SomethingElse":"serv","Description":"desc"}
请注意,当您创建一个 class 的新实例,然后立即填充它并为属性赋值时,最好使用 Object Initializer 方法。
所以不是这个:
Service c = new Service();
c.description = "desc";
c.service = "serv";
最好这样做:
Service c = new Service
{
Description = "desc",
SomethingElse = "serv"
};
这是一个正确的例子:
using Newtonsoft.Json;
using System;
using Microsoft;
public class Program
{
public static void Main()
{
Service c = new Service();
c.description = "desc";
c.service = "serv";
string json = JsonConvert.SerializeObject(c, Formatting.Indented);
Console.WriteLine(json);
}
public class Service
{
public Service() { }
public string service;
public string description;
}
}