首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataMember属性不影响json结果

DataMember属性不影响json结果
EN

Stack Overflow用户
提问于 2015-04-02 10:09:52
回答 2查看 1.9K关注 0票数 2

我有一个带有System.Runtime.Serialization属性的模型:

代码语言:javascript
复制
[DataContract]
public class DataTableItemModel
{
    [DataMember(Name = "targets")]
    public int[] Targets { get; set; }
    [DataMember(Name = "visible")]
    public bool Visible { get; set; }
    [DataMember(Name = "searchable")]
    public bool Searchable { get; set; }
    [DataMember(Name = "name")]
    public string Field { get; set; }
}

在Razor Model.DataTablesDescription (这是List<DataTableItemModel>)之后:

@Html.Raw(new JavaScriptSerializer().Serialize(Model.DataTablesDescription))

@Html.Raw(Json.Encode(Model.DataTablesDescription))

输出HTML如下所示:

[{"Targets":[0],"Visible":false,"Searchable":false,"Field":"Id"}, ...]

但我料到:

[{"targets":[0],"visible":false,"searchable":false,"name":"Id"},

即受制于DataMember属性。

怎么了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-02 10:17:00

问题是JavaScriptSerializer不考虑您的[DataMember]/[DataContract]

尝试使用DataContractJsonSerializer

例如:

代码语言:javascript
复制
@{
var serializer = new DataContractJsonSerializer(typeof(DataTableItemModel));
var memoryStream = new MemoryStream();

serializer.WriteObject(memoryStream, Model.DataTablesDescription);

@Html.Raw(new StreamReader(memoryStream).ReadToEnd())
}

或者,使用Json.NET代替:

代码语言:javascript
复制
@Html.Raw(JsonConvert.SerializeObject(Model.DataTablesDescription));

请参阅MSDN

票数 0
EN

Stack Overflow用户

发布于 2015-04-02 10:17:05

你能试试这个吗?

代码语言:javascript
复制
[DataContract]
public class DataTableItemModel
{
    [DataMember]
    [DisplayName("targets")]
    public int[] Targets { get; set; }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29410304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档