相关疑难解决方法(0)

从未调用ASP.NET Web API自定义JsonConverter

所以这是我的情况.我正在WebForms应用程序中实现一个WEB API.我有一堆动态类,它们本质上是字典,需要使用自定义JSON序列化格式化程序才能正常工作(因为默认转换器只显示一堆键值配对).

所以首先我创建了一个自定义JSON转换器:

/// <summary>
/// A class to convert entities to JSON
/// </summary>
public class EntityJsonConverter : JsonConverter
{
    public override bool CanConvert(Type objectType)
    {
        return objectType.IsSubclassOf(typeof(Entity));
    }

    public override bool CanRead
    {
        get { return true; }
    }

    public override bool CanWrite
    {
        get { return true; }
    }

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        // Details not important. This code is called and works perfectly.
    }

    public override object ReadJson(JsonReader reader, Type …
Run Code Online (Sandbox Code Playgroud)

.net rest webforms json.net asp.net-web-api

11
推荐指数
1
解决办法
6707
查看次数

Json.net反序列化null guid案例

我正在使用Json.NET包含Guid类型的私有字段和该字段的公共属性的对象反序列化.当Guid我的json中的值为null时,我想分配Guid.Empty给我的字段.

public class MyClass
{
    private Guid property;
    public Guid Property
    {
        get { return property; }
        set 
        {
            if (value == null)
            {
                property = Guid.Empty;
            }
            else
            {
                property = value;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是deserializer想要访问私有字段,导致我在尝试反序列化时遇到此错误:

将值{null}转换为类型'System.Guid'时出错.路径'[0] .property',第6行,第26位.

如何让它忽略私有字段并使用公共属性呢?

c# serialization json json.net

8
推荐指数
1
解决办法
8898
查看次数

.NET Core中的Mongo C#驱动程序和ObjectID JSON字符串格式

问题

我有一组动态数据.我想这样回来:

{
  _id: "58b454f20960a1788ef48ebb"
  ... 
}
Run Code Online (Sandbox Code Playgroud)

尝试

以下列出了不起作用的方法:

这个

await resources = _database.GetCollection<BsonDocument>("resources")
    .Find(Builders<BsonDocument>.Filter.Empty)
    .ToListAsync();

return Ok(resources);
Run Code Online (Sandbox Code Playgroud)

产量

[[{"name":"_id","value":{"bsonType":7,"timestamp":1488213234,"machine":614561,"pid":30862,"increment":16027323,"creationTime":"2017-02-27T16:33:54Z","rawValue":{"timestamp":1488213234,"machine":614561,"pid":30862,"increment":16027323,"creationTime":"2017-02-27T16:33:54Z"},"value":{"timestamp":1488213234,"machine":614561,"pid":30862,"increment":16027323,"creationTime":"2017-02-27T16:33:54Z"}}}]]
Run Code Online (Sandbox Code Playgroud)

这个

await resources = _database.GetCollection<BsonDocument>("resources")
    .Find(Builders<BsonDocument>.Filter.Empty)
    .ToListAsync();

return Ok(resources.ToJson());
Run Code Online (Sandbox Code Playgroud)

产量

[{ "_id" : ObjectId("58b454f20960a1788ef48ebb"), ... }]
Run Code Online (Sandbox Code Playgroud)

这个

await resources = _database.GetCollection<BsonDocument>("resources")
    .Find(Builders<BsonDocument>.Filter.Empty)
    .ToListAsync();

return Ok(resources.ToJson(new JsonWriterSettings() { OutputMode = JsonOutputMode.Strict }));
Run Code Online (Sandbox Code Playgroud)

产量

[{ "_id" : { "$oid" : "58b454f20960a1788ef48ebb" }, ... }]
Run Code Online (Sandbox Code Playgroud)

这个

await resources = _database.GetCollection<BsonDocument>("resources")
    .Find(Builders<BsonDocument>.Filter.Empty)
    .ToListAsync();

return Ok(Newtonsoft.Json.JsonConvert.SerializeObject(resources));
Run Code Online (Sandbox Code Playgroud)

产量

"Newtonsoft.Json.JsonSerializationException:在'MongoDB.Bson.BsonObjectId'上从'AsBoolean'获取值时出错.---> System.InvalidCastException:无法将类型为'MongoDB.Bson.BsonObjectId'的对象强制转换为'MongoDB.Bson .BsonBoolean"

BsonDocument改为dynamic产生相同的结果. …

c# dynamic mongodb .net-core

8
推荐指数
1
解决办法
2886
查看次数

Json.Net:序列化/反序列化属性是一个值,而不是一个对象

在另一个类中使用时,如何实现Id类的以下JSON表示形式?

class Car
{
    public StringId Id { get; set; }
    public string Name { get; set; }
}

class StringId
{
    public string Value { get; set; }
}

// ---------------------------------------------

// Desired representation
{ "Id": "someId", "Name": "Ford" }

// Default (undesired) representation
{ "Id" : { "Value": "someId" }, "Name": "Ford" }
Run Code Online (Sandbox Code Playgroud)

c# serialization json json.net

5
推荐指数
1
解决办法
2050
查看次数