我将数据绑定到一个对象。现在我想用自定义属性名称序列化它。
[JsonProperty(PropertyName = "KLM")]
public string ABC { get; set; } = "Test1";
[JsonProperty(PropertyName = "NOP")]
public string DEF { get; set; } = "Test2";
[JsonProperty(PropertyName = "QRS")]
public string GHI { get; set; } = "Test3";
当我序列化这个对象时,我想要下面的序列化
{ "KLM" : "Test1", "NOP" : "Test2", "QRS" : "Test3" }
代替
{ "ABC" : "Test1", "DEF" : "Test2", "GHI" : "Test3" }
当使用下面的 JSON 反序列化它时,它应该可以正常工作
{ "ABC" : "1Test", "DEF" : "2Test", "GHI" : "3Test" }
这个问题可能被问过很多次,但我找不到合适的答案。
答案 0 :(得分:0)
请尝试:
using Newtonsoft.Json;
namespace Application.ConsoleApp
{
class Program
{
static void Main(string[] args)
{
var j = "{ \"KLM\" : \"Test1\", \"NOP\" : \"Test2\", \"QRS\" : \"Test3\" }";
var o = JsonConvert.DeserializeObject<MyJsonObject>(j);
var s = JsonConvert.SerializeObject(o);
}
}
public class MyJsonObject
{
[JsonProperty(PropertyName = "KLM")]
public string ABC { get; set; } = "Test1";
[JsonProperty(PropertyName = "NOP")]
public string DEF { get; set; } = "Test2";
[JsonProperty(PropertyName = "QRS")]
public string GHI { get; set; } = "Test3";
}
}
您可能正在使用不同的工具进行属性和序列化/反序列化。在我的示例中,您可以看到我使用的是 Newtonsoft 库。我正在从这个库中获取属性和方法。例如,如果您使用来自 Newtonsoft 的属性和来自 System.Text.Json 的方法,它将无法按您想要的方式工作。
更新:
这不是你想要的吗?
图片显示这是双向的。如果 json 匹配属性,则通过属性对其进行反序列化。如果 json 与类的属性名称匹配,则 json 将通过属性名称反序列化。这个对象总是被属性反序列化。
如果我仍然误解你,对不起!