我有以下情形:我正在使用WebAPI,并根据模型将JSON结果返回给使用者。现在,我还具有将模型序列化为base64的附加要求,以便能够将其持久化在缓存中和/或用于审计目的。问题是,当我将[Serializable]
属性添加到模型中以便将模型转换为Base64时,JSON输出更改如下:
该模型:
[Serializable]
public class ResortModel
{
public int ResortKey { get; set; }
public string ResortName { get; set; }
}
没有该[Serializable]
属性,JSON输出为:
{
"ResortKey": 1,
"ResortName": "Resort A"
}
使用该[Serializable]
属性,JSON输出为:
{
"<ResortKey>k__BackingField": 1,
"<ResortName>k__BackingField": "Resort A"
}
如何在[Serializable]
不更改JSON输出的情况下使用属性?
默认情况下,Json.NET会忽略该Serializable
属性。不过,根据要评论此答案由张曼玉颖,覆盖的WebAPI这种行为,这会导致你的输出。
默认情况下,Json.NET序列化程序将IgnoreSerializableAttribute设置为true。在WebAPI中,我们将其设置为false。遇到此问题的原因是Json.NET忽略了属性:“
Json.NET现在检测到具有SerializableAttribute的类型,并对该类型上的所有字段(包括公共字段和私有字段)进行序列化,并忽略属性”(引自james。
newtonking.com/archive/2012/04/11/…
)
一个简单的示例演示没有WebAPI时的相同行为,如下所示:
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using System;
namespace Scratch
{
[Serializable]
class Foo
{
public string Bar { get; set; }
}
class Program
{
static void Main()
{
var foo = new Foo() { Bar = "Blah" };
Console.WriteLine(JsonConvert.SerializeObject(foo, new JsonSerializerSettings()
{
ContractResolver = new DefaultContractResolver()
{
IgnoreSerializableAttribute = false
}
}));
}
}
}
有几种方法可以解决此问题。一种是用普通JsonObject
属性装饰模型:
[Serializable]
[JsonObject]
class Foo
{
public string Bar { get; set; }
}
另一种方法是覆盖的默认设置Application_Start()
。根据此答案,默认设置应执行以下操作:
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings = new Newtonsoft.Json.JsonSerializerSettings();
如果那不起作用,您可以明确地知道它:
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings = new JsonSerializerSettings()
{
ContractResolver = new DefaultContractResolver()
{
IgnoreSerializableAttribute = true
}
};
问题内容: 在模型类中使用JavaFX bean属性是否正确? 我想知道在模型类中使用属性是否能够将它们与视图组件轻松绑定是否是一种好习惯。我不担心将来这些库的可用性,因为我的程序将在JRE8或更高版本上运行,但是在模型类中使用JavaFX库的性质使我持怀疑态度,并且我担心当前和将来的不兼容性,尤其是因为我想使用Hibernate来保留这些属性。 注意:我使用纯JavaFX环境,并且我的应用程
我的Html代码是这样的。 课程:- 当我调用MVC控制器时,通过上层输入,绑定就发生了。以下方法的方法 x中的值是 但是当我在web api中尝试同样的事情时,它给了我415(不支持的媒体类型)。方法如下 它没有绑定,而是给出了415状态代码,上面写着不支持的媒体类型。我知道这么问很蠢但为什么会这样?如果我想做相同的绑定发生在mvc如何实现?我不想做这样的事 有没有办法做到这一点?
我试图发送模型,这部分是一些IFormFile类型的属性,代表用户头像。但不幸的是,我的头像属性总是空的,我看到了很多如何发送单个图片元素的示例,但我可以找到如何发送它的示例,当它是模型的一部分而不是一个单一的元素,就像这里做的那样 下面是我的组件方法,我在其中设置了这个道具 } 下面是我的后端put方法(ASP.NET核心) 这里还有remove[FromBody],在这种情况下不要改变任何东西
javafx属性是将数据模型连接到javafx gui的好方法,因为它们的绑定模型实现了强大的通知更新机制。 属性和绑定并不严格地与GUI相关,而是对JavaBeans的扩展。 因此,我们希望在应用程序模型类中使用它们,而不引入对包的依赖关系,并且通常来自. 换句话说:(update) 我可能需要将应用程序分成两个模块。 一个模块应该只包含操作数据的类(模型类,说MVC)。 第二个模块将包含所有图
问题内容: 是否可以一次更新父模型和关联模型的属性?我无法使其正常工作,并且无法找到任何完整的示例。我不确定我的代码是否有问题或是否没有按照我期望的方式工作。我尝试将onUpdate:’cascade’添加到我的hasMany定义中,但这似乎无济于事。 楷模: 检索过滤器并尝试更新关联的FilteredContent对象上的属性: 这导致仅Filter对象中的属性被更新。如何获取它还更新Filte
问题内容: 我目前正在学习Django,我的一些模型具有自定义方法来获取以特定方式格式化的值。是否可以使用order_by()在模型中定义为属性的这些自定义方法之一的值? 这是一个演示该属性如何实现的示例。 使用此模型,我可以执行以下操作: 但是我不能: 在这样的自定义属性上使用order_by的正确方法是什么? 问题答案: 不,你不能那样做。是在数据库级别应用的,但是数据库对你的自定义Pytho