名称属性什么都不做?JSON 序列化

本文关键字:JSON 序列化 属性 什么 | 更新日期: 2023-09-27 18:33:54

我有一个准备序列化JSON对象的类,我的REST API返回一个名为"api_key"的值,但我想要一个名为"ApiKey"的属性,然后我编写了以下代码:

    [DataContract]
    class JsonToken
    {
        [DataMember(Name = "api_key")]
        public string ApiKey { get; set; }
    }

我以为"名称"值会映射值,但不会占用。然后我会将我的代码更改为这样的东西,现在它可以工作了。

    [DataContract]
    class JsonToken
    {
        [DataMember]
        public string api_key{ get; set; }
    }

但是我仍然希望我的属性名为"ApiKey",那么,我有两个问题:

1ª 如何将我的服装命名为"ApiKey"(它有效)?

2ª 如果不是映射值,则 Name 属性有什么作用?

提前谢谢。

名称属性什么都不做?JSON 序列化

您可以使用

System.Runtime.Serialization.Json.DataContractJsonSerializer类进行序列化 - 您可能需要添加对System.Runtime.Serialization的引用。

JsonToken token = new JsonToken() { ApiKey = "Gunk" };
DataContractJsonSerializer jsx = new DataContractJsonSerializer(typeof(JsonToken));
string json = "";
using (MemoryStream ms = new MemoryStream())
{
    jsx.WriteObject(ms, token);
    json = Encoding.UTF8.GetString(ms.ToArray());
}
Console.WriteLine(json);

没有直接到字符串序列化选项,因此必须将其包装在内存流周围。 上面的代码应该给出

{"api_key":"Gunk"}