我有一个准备序列化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属性会起什么作用?
提前致谢。
答案 0 :(得分:0)
您可以使用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"}