相关疑难解决方法(0)

DataContractJsonSerializer和Enums

当我使用DataContractJsonSerializer序列化枚举值时,它序列化枚举的数值,而不是字符串名称.

IE:

enum foo
{
   bar,
   baz
}
Run Code Online (Sandbox Code Playgroud)

序列化foo.bar的值将返回"0",而不是"bar".

相反,我更喜欢它,有没有办法覆盖它?

编辑:

因为我不想更改序列化程序,所以我使用了一个简单的解决方法.

我在类中公开了一个属性来序列化,调用ToString值,即:

// Old
[DataMember]
public EnumType Foo
{
    get { return _foo; }
    set { _foo = value; }
}

// New, I still kept the EnumType but I only serialize the string version

public EnumType Foo
{
    get { return _foo; }
    set { _foo = value; }
}

[DataMember]
public string FooType
{
    get { return _foo.ToString(); }
    private set {}
}
Run Code Online (Sandbox Code Playgroud)

wcf serialization json

39
推荐指数
3
解决办法
2万
查看次数

更改序列化的属性名称

我的类有一个属性'PropertyA',我希望它在序列化时在JSON对象中显示为'PropertyB'.我可以使用任何类型的属性吗?

c# serialization json

13
推荐指数
1
解决办法
2万
查看次数

JavaScriptAerializer的等效的XmlAttribute/XmlElement

是否有一个等效的属性可以放在.NET类中的对象属性上,它将执行等效的XmlElement或XmlAttribute?

[XmlRoot("objects")]
public class MyObjects: List<MyObject> { }

[XmlRoot("object")]
public class MyObject {
  [XmlAttribute("name")]
  public string Name { get; set; }
  [XmlAttribute("title")]
  public string Title { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这将返回类似于以下内容的XML:

<objects>
  <object name="David" title="Engineer" />
  <object name="William" title="Developer" />
</objects>
Run Code Online (Sandbox Code Playgroud)

我想拥有JavaScriptSerializer,由Controller类中的ASP.NET MVC框架'Json'方法使用:

public ActionResult Search() {
   // code to populate data object
   return Json(data);
}
Run Code Online (Sandbox Code Playgroud)

返回相同的格式化结果,如下所示:

[{"name":"David","title":"Engineer"},{"name":"William","title":"Developer"}]
Run Code Online (Sandbox Code Playgroud)

目前,使用Json方法输出对象,返回:

[{"Name":"David"}, "Title":"Engineer"}, {"Name":"William", "Title":"Developer"}]
Run Code Online (Sandbox Code Playgroud)

现在,我意识到这个例子是超级简化的,我在这里做的唯一事情就是改变属性名称的大小,但在更高级的场景中,我可以将属性名称重新映射到其他东西......

System.Web.Script.Serialization包含一个ScriptIgnoreAttribute属性,但这只是告诉JavaScriptSerializer在序列化时忽略该属性,但似乎没有任何东西可以改变实际输出的名称或格式呢?

.net javascript serialization

6
推荐指数
1
解决办法
3715
查看次数

JavaScriptSerializer - 自定义属性名称

我正在使用JavaScriptSerializer来反序列化json数据.一切都很好,但我的问题是,json数据中的一个属性被命名为'base',所以我不能在我的C#代码中创建这样的属性.我发现我可以手动将值映射到构造函数中的属性,但问题是,我的DTO有200个属性,所以我不想手动创建它,而是希望找到任何其他解决方案.我也尝试使用注释,但是这个:

[JsonProperty("base")]
public int baseValue { get; set; }
Run Code Online (Sandbox Code Playgroud)

没有帮助我,值baseValue每次设置为0(如果你认为,这个注释应该工作,我可以发布我的整个代码,不仅这2行)

有什么办法可以简单地解决我的问题吗?

c# json javascriptserializer

6
推荐指数
1
解决办法
9089
查看次数

是否有可能在C#中有一个名为bool的字段?

我正在使用C#进行弹性搜索,我希望使用C#序列化为JSON的匿名类型创建查询.但是我遇到了一个问题,因为我需要在一个部分中看起来像这样的JSON:

{"bool": {<unimportant for question>}}
Run Code Online (Sandbox Code Playgroud)

这将转换为具有名为bool的字段的ac#类.这可能吗?(我猜不是......)

我想我需要自定义序列化,或者弹性搜索为bool提供了一些其他的替代名称.

c# json elasticsearch

4
推荐指数
1
解决办法
157
查看次数

相当于.NET中的JSON.NET JsonProperty

我有一个返回的JSON

{
    "access_token": "",
    //....
}
Run Code Online (Sandbox Code Playgroud)

我想把它映射到AccessToken而不是access_token.

使用JSON.NET,可以编写

[JsonProperty("access_token")]
public string AccessToken{ get; set; }
Run Code Online (Sandbox Code Playgroud)

ASP.NET框架中是否存在等价物?我不想要JSON.NET依赖.

asp.net

2
推荐指数
1
解决办法
169
查看次数