相关疑难解决方法(0)

在使用Json.net进行序列化时如何更改属性名称?

我在C#DataSet对象中有一些数据.我现在可以使用像这样的Json.net转换器来序列化它

DataSet data = new DataSet();
// do some work here to populate 'data'
string output = JsonConvert.SerializeObject(data);
Run Code Online (Sandbox Code Playgroud)

但是,这会data在打印到.json文件时使用属性名称.我想将属性名称更改为不同的名称(例如,将'foo'更改为'bar').

在Json.net文档中,在"序列化和反序列化JSON"→"序列化属性"下,它表示"JsonPropertyAttribute ...允许自定义名称".但没有例子.有谁知道如何使用JsonPropertyAttribute将属性名称更改为其他名称?

(直接链接到文档)

Json.net的文档似乎很少.如果你有一个很好的例子,我会尝试将它添加到官方文档中.谢谢!

c# serialization json.net

415
推荐指数
3
解决办法
28万
查看次数

MVC 4中正确的JSON序列化

我想让JSON'正确'序列化(camelCase),并且能够在必要时更改日期格式.

对于Web API,它非常简单 - 在Global.asax中,我执行以下代码

var json = GlobalConfiguration.Configuration.Formatters.JsonFormatter;
json.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
Run Code Online (Sandbox Code Playgroud)

这个代码在管道级别按照我喜欢的方式处理序列化.

我想在MVC 4中完成同样的事情 - 从控制器操作方法返回的任何JSON都要正确序列化.通过一点搜索,我发现以下代码将引入Global.asax应用程序启动:

HttpConfiguration config = GlobalConfiguration.Configuration;
Int32 index = config.Formatters.IndexOf(config.Formatters.JsonFormatter);
config.Formatters[index] = new JsonMediaTypeFormatter
{
     SerializerSettings = new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }
};
Run Code Online (Sandbox Code Playgroud)

它似乎执行正常,但当我从控制器返回JSON时,它都是PascalCased.我的动作方法的一个简单示例:

private JsonResult GetJsonTest()
{
    var returnData = dataLayer.GetSomeObject();
    return Json(returnData, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)

我错了吗?知道如何在管道级别实现这一目标吗?

c# asp.net asp.net-mvc json asp.net-mvc-4

43
推荐指数
3
解决办法
6万
查看次数

ASP.NET MVC:使用JsonResult控制属性名的序列化

有没有办法控制JsonResult带属性的JSON输出,类似于你如何使用它们XmlElementAttribute以及它的bretheren来控制XML序列化的输出?

例如,给定以下类:

public class Foo
{
    [SomeJsonSerializationAttribute("bar")]
    public String Bar { get; set; }

    [SomeJsonSerializationAttribute("oygevalt")]
    public String Oygevalt { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想得到以下输出:

{ bar: '', oygevalt: '' }
Run Code Online (Sandbox Code Playgroud)

相反:

{ Bar: '', Oygevalt: '' }
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc serialization json

31
推荐指数
4
解决办法
2万
查看次数

在MVC 4中将Object转换为JSON

我正在使用一个对象转换为JSON JavaScriptSerializer,我可以在服务器代码中看到这个JSON输出:

[{"UserId":1,"UserName":"Admin"}]
Run Code Online (Sandbox Code Playgroud)

但是在UI中,它会转换为类似下面的内容

[{"UserId":1,"UserName":"Admin"}].
Run Code Online (Sandbox Code Playgroud)

怎么逃避那些"?

json asp.net-mvc-4

30
推荐指数
2
解决办法
6万
查看次数