微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数据类型为JSON

如何解决数据类型为JSON

我检查了许多其他问题的相似问题,并尝试了不同的解决方案,但均未成功。

我有一个asp.net core 2.2 Web应用程序(控制器,不是rest-api),我添加了用于启动json格式化程序的配置:

AddJsonoptions(options => options.SerializerSettings.ContractResolver = new DefaultContractResolver());

在我的视图中,我这样做:

function crearObjetoTramiteRequisito() {
        var tramiteGeneralId = retornarItemGridTramitesGenerales().Id;
        var tramitesRequisitos = [];
        $.each(arrayDocumentoSeleccionado,function (index,value) {
            tramitesRequisitos.push({ Id: 0,TramiteDocumentoId: value,TramiteGeneralId: tramiteGeneralId});
        });
        
        return tramitesRequisitos;
    }

function guardarTramitesRequisitos() {
        onCloseWindowRequisitos();
        var requestData = crearObjetoTramiteRequisito();
       
        $.ajax({
            url: "@Url.Action("CrearRequisitos","ConfiguracionTramitesGenerales")",type: 'POST',headers: {
                "RequestVerificationToken": antiForgeryTokens()
            },dataType: 'json',data: {'requestData': JSON.stringify(requestData) },success: function (result) {
                console.log(result);
            },error: function (e) {
                console.log(e);
            }
        });
    }

我希望控制器参数中包含一个JSON数组。

enter image description here

viewmodel:

public class TramiteRequisitoviewmodel
{
    public int Id { get; set; }
    public int TramiteDocumentoId { get; set; }
    public int TramiteGeneralId { get; set; }
}

控制器为:

[HttpPost]
    [ValidateAntiForgeryToken]
    public JsonResult CrearRequisitos (List<TramiteRequisitoviewmodel> requestData)
    {
        int x = 0;

requestData参数带有0个元素。

无论我使用[FromBody] param属性还是使用数组JSON对象而不是对它们进行字符串化,都不起作用,也不使用contentType:“ application / json; charset = utf-8”

解决方法

ContentType是请求数据类型,dataType是响应数据类型,可以引用他的link

数据应为data: JSON.stringify(requestData)

格式

一个简单的测试,如下所示:

脚本:

<button id="btn" onclick="guardarTramitesRequisitos()" value="Submit"></button>

@section scripts{ 
    <script>
    function crearObjetoTramiteRequisito() {
        var tramitesRequisitos = [];
        tramitesRequisitos.push({ Id: 0,TramiteDocumentoId: 1,TramiteGeneralId: 1 });
        tramitesRequisitos.push({ Id: 0,TramiteDocumentoId: 2,TramiteGeneralId: 1 });
        console.log(tramitesRequisitos);
        return tramitesRequisitos;
    }

    function guardarTramitesRequisitos() {
    
        var requestData = crearObjetoTramiteRequisito();

        $.ajax({
            url: "@Url.Action("CrearRequisitos","ConfiguracionTramitesGenerales")",type: 'POST',contentType:'application/json; charset=utf-8',dataType: 'json',data: JSON.stringify(requestData),success: function (result) {
                console.log(result);
            },error: function (e) {
                console.log(e);
            }
        });
    }
    </script>
}

控制器:

[HttpPost]
public JsonResult CrearRequisitos([FromBody]List<TramiteRequisitoViewModel> requestData)
{
    return Json(requestData);
}

结果:

enter image description here

,

将此内容
data: {'requestData': JSON.stringify(requestData) }
更改为
data: { JSON.stringify(requestData) }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。