System.Text.Json-无法将JSON值转换为System.String

时间:2019-10-29 20:17:08

标签: json asp.net-core system.text.json

我将以下for unique_class in df['Classification'].unique(): class_df = df[df['Classification'] == unique_class].copy() result1, result2 = call_attribution_function(class_df) overall_results1.append(result1) overall_results2.append(results2) 发送到api

json

我想将其映射到以下内容:

{
     "Id":22,
     "UserId":22,
     "Payload":{
        "Field":"some payload value"
        ...more unknown field/values go here
     },
     "ContextTypeId":1,
     "EventTypeId":1,
     "SessionId":1
}

当映射 public class CreateTrackItem : IRequest<int> { public int Id { get; set; } public int UserId { get; set; } public string Payload { get; set; } public int ContextTypeId { get; set; } public int SessionId { get; set; } public int EventTypeId { get; set; } } 属性失败时,无法将Payload映射到字符串,我只是希望jsonPayload的{​​{1}}版本(将进入string中的json字段中)

我正在使用.NET Core 3.0,并且希望在切换到jsonb之前尽可能使用内置的postgres

2 个答案:

答案 0 :(得分:0)

您可以使用对象类型代替字符串。或使用Newtonsoft的JToken类型,如Ryan上面已经提到的那样。

  

公共对象有效载荷{get;组; }

 public class CreateTrackItem : IRequest<int>
{  
    public int Id { get; set; }
    public int UserId { get; set; }

    public object Payload { get; set; }
    public int ContextTypeId { get; set; }
    public int SessionId { get; set; }
    public int EventTypeId { get; set; }
}

答案 1 :(得分:0)

如果您正在使用asp.net core 3.0,则它具有内置的JSON支持。我已经使用了以下内容,并且无需设置自定义输入处理程序即可使用该功能。

[HttpPost]
public async Task<IActionResult> Index([FromBody] JsonElement body)
{

    string json = System.Text.Json.JsonSerializer.Serialize(body);
    return Ok();

}