我的枚举是:
public class Reminder {
public String reminderMessage;
public String senderUID;
public String senderName;
public String receiverUID;
public String receiverName;
public String reminderTime;
public String timestamp;
public String status;
public String receiverUID_status;
public Reminder() {
// Default constructor required for calls to DataSnapshot.getValue(User.class)
}
public Reminder(String reminderMessage,String senderUID,String senderName,String receiverUID,String receiverName,String reminderTime,String timestamp,String status,String receiverUID_status) {
this.reminderMessage = reminderMessage;
this.senderUID =senderUID ;
this.senderName=senderName;
this.receiverUID=receiverUID;
this.receiverName=receiverName;
this.reminderTime=reminderTime;
this.timestamp=timestamp;
this.status=status;
this.receiverUID_status=receiverUID_status;
}
如何让HttpGet在我的api中在Json上显示它?
答案 0 :(得分:2)
您可以使用此功能:
public class EnumModel<T>
{
public string StringValue { get; set; }
public T EnumValue { get; set; }
public int IntValue { get; set; }
public string DisplayName { get; set; }
public static List<EnumModel<T>> GetModel()
{
var t = typeof(T);
var fields = t.GetFields();
return fields.Where(x => x.CustomAttributes.Any(z => z.NamedArguments.Any(n => n.MemberName == "Name"))).Select(x =>
new EnumModel<T>
{
StringValue = x.Name,
EnumValue = (T)Enum.Parse(t, x.Name),
IntValue = (int)Enum.Parse(t, x.Name),
DisplayName = (string)x.CustomAttributes.Select(z => z.NamedArguments.First(n => n.MemberName == "Name").TypedValue).First().Value,
}).ToList();
}
}
用法:
var modelList = EnumModel<AlunoSexo>.GetModel();
string json = new JavaScriptSerializer().Serialize(modelList);
return new View(ModelList);
您的JSON将如下所示:
[
{
"StringValue":"M",
"EnumValue":1,
"IntValue":1,
"DisplayName":"Masculino"
},
{
"StringValue":"F",
"EnumValue":2,
"IntValue":2,
"DisplayName":"Feminino"
}
]
或者,您可以使用自定义库进行Javascript序列化,例如Newtonsoft.Json
,并更改装饰enum
以使用该库的方式。
这里有几个例子:How to tell JSON.NET StringEnumConverter to take DisplayName?