使用,我正在编写一个自定义反序列化方法来反序列化一个JSON对象。该方法从JSON中读取每个属性名和值,并按照Microsoft中所示的示例,手动将结果分配到反序列化对象中。但是,在我的例子中,JSON对象有时会包含一些我想忽略的未知属性。当发生这种情况时,文档中的示例代码将引发异常:
JsonException: The converter 'PersonConverter' read too much or not enough.
如何正确地跳过自定义对象反序列化器中的未知属性?
下面是一个最小的例子。假设我有以下数据模型:
public class Person
我正在实现一个支持部分响应的Web API。
/api/users?fields=id,name,age
给定User类
[JsonObject(MemberSerialization.OptIn)]
public partial class User
{
[JsonProperty]
public int id { get; set; }
[JsonProperty]
public string firstname { get; set; }
[JsonProperty]
public string lastname { get; set; }
[JsonP
下面是我的代码:
open Newtonsoft.Json
open Newtonsoft.Json.Converters
type T = {
mutable name : string;
mutable height : int;
}
let a = { name = "abc"; height = 180;}
a.height <- 200
let b = JsonConvert.SerializeObject(a, Formatting.Indented)
printfn "%s" b
代码的输出
我在.NET 4.5 windows商店应用程序中使用了股票JSON序列化程序-
System.Runtime.Serialization.Json.DataContractJsonSerializer
我有一个由API提供程序提供的类,例如
class A { public DateTime Date {get;set} }
我想通过这样做来隐藏日期字段(注意-新的关键字):
class AEx : A { public new string Date {get;set} }
但我得到了例外:
类型'AEx‘不能用DataContractJsonSerializer序列化,因为
对我的API使用节点dredd。我选择使用yml文件,因为这是我的团队熟悉的std。
下面是我们有一个功能正常的代码片段:
/api/station/{id}:
get:
produces:
- application/json; charset=utf-8
parameters:
- name: id
in: path
required: true
type: string
description: DynamoDB ID of the station to edi
对于我的ASP.NET MVC MVC服务,我有一个作为JSON返回的模型。现在,我的模型中有一些我不想返回的属性。
一个示例模型:
class Account {
public int ID { get; }
public string Username { get; }
public string Password { get; }
//... more properties
}
假设我只想以JSON的形式返回ID和Username属性。我正在寻找一个良好的方法,只过滤这些属性。更改访问修饰符对我来说不是一个选项。
我能想到的一个解决方案是创建一个白名单,如
我有一个非常好用的API,它的返回值使用了遍及…的命名约定。从驼峰大小写到Pascal大小写再到带空格的字符串…这是一团糟…
因此,为了序列化或反序列化它,使用json.net添加一个jsonSerializer或添加一个带有json属性属性的类就足够简单了:
[JsonProperty(PropertyName = "somebanged upName")]
public string[] SomethingBangedUp;
在将一些值硬输入到枚举中时,我也想做类似的事情,然后获得一个‘banged up name’的列表,而不是变量名:
public enum SomeB
为什么我会收到这条错误消息Property 'shortDescr' of object #<Article> is not a function
function Article() {
this.id = null;
this.title = null;
this.url = null;
this.descr = null;
this.media = null;
};
Article.prototype.shortDescr = function () {
if
Jqgrid没有显示JSON数据,但是行正在生成
服务器端代码:
public JsonResult Denominations()
{
.
.
int counter = 0;
var jsonData = new
{
total = result.UserObject.Count,
page = 1,
rows = (
from p in result.UserObject
select new
{
id = ++counter,
cell = new string [] {
我编写了这个脚本,它将TSVs文件夹的内容上传到Postgres数据库。
它可以工作,但它逐行读取文件,这需要很长时间。
是否有一种方法来修改它,使其运行\COPY命令而不是INSERT命令?
我在下面的代码中保留了以前尝试的\拷贝(但注释掉了)。该代码的问题在于它将文件头复制到Postgres表的行中。
def main():
# MAKE SURE THIS IS THE RIGHT FILE TYPE
for file in pathlib.Path().rglob('*.tsv'):
print(os.path.abspath(file))
# MA
我正在将一个项目从Microsoft.AspNetCore.Mvc.NewtonsoftJson迁移到System.Text.Json。在.NET Core3.1中,由于的原因,我无法这样做,因为我的一些模型包含IDictionary<int, T>类型的属性,如下所示:
public class MyClass {
public int ID { get; set; }
public IDictionary<int, ThingClass> Things { get; set; }
}
在.NET 5中,这现在适用于序列化,因此可以:
[HttpGe
我在用xamarin反序列化Json时遇到了问题。
我得到了这个问题:
Newtonsoft.Json.JsonSerializationException: Unable to find a constructor to use for type RadioApp.Model.Data. A class should either have a default constructor, one constructor with arguments or a constructor marked with the JsonConstructor attribute. Path 'dat