如何在JSON对象中包含空值作为占位符? - c#

我的项目将使用HTML 5和jQuery Mobile前端,并通过AJAX来回传递JSON数据到与MySQL数据库对话的C#ASP.NET后端(以下示例未显示任何后端C#,MySQL或还没有AJAX代码)。

我已经弄清楚了我的JSON对象(字符串?)是什么样子,这是一个节省空间的简化版本:

{
    "Events": {
        "Common": {
            "User": "string",
            "PCBID": 52759,
            "Notes": "string"
        },
        "Assign": {
            "SBEPN": "string",
            "SBEJobNumber": "string",
            "SBESerialNumber": "string",
            "SBEModelNumber": "string"
        }
    }
}

对于每个事件,将始终填充“公共”节点,并且根据事件类型(分配,创建,修改等),将填充一些数据,而其他可用变量将不会填充。为简便起见,我仅包括“分配”节点,但在其下方还有五个其他稍微复杂一些的节点。

我以为我可以将JS中的变量预先分配给nullJSONObject.NULL,然后使用三元语句将它的真实值赋给用户(如果由用户提供),或者将其保留为null。我的想法是,我不必在后面的C#代码中产生一堆重载,我只需传递一个JSON大块,然后根据填充的内容或保留为null的方式弄清楚该怎么做。这是我尝试声明变量的一种方法:

var user = JSONObject.NULL;
var pcbid = JSONObject.NULL;
var notes = JSONObject.NULL;
etc...

这些显示为未定义的JSONObject,如果我改为将它们声明为null,如下所示:

var user = null;
var pcbid = null;
var notes = null;
etc... 

无论我是否JSON.stringify它们,它们都显示为未定义而不是null。

这就是我为变量分配字符串的方式:

user = $("#input_common_user").val() !== null ? $("#input_common_user").val() : JSONObject.NULL;
pcbid = $("#input_common_pcbid").val() !== null ? $("#input_common_pcbid").val() : JSONObject.NULL;
notes = $("#input_common_notes").val() !== null ? $("#input_common_notes").val() : JSONObject.NULL;

这是a working fiddle with all the various variables & events defined

在此示例中,我仅填充了两个字段以简化测试。我希望得到一个我可以(最终)交给AJAX的JSON对象,但是我缺少了一些东西。我还怀疑可能不是Javascript构造,因为实际上我只能在Android&Java文档中找到它的引用,但是看来我仍然应该可以在其中使用JSONObject.NULL

因此,我的问题是,如何将空值作为可能填充或未填充用户的text / ints / booleans的占位符放入JSON对象?

编辑以显示功能代码(请参见上面的小提琴链接中的完整示例):

声明我的JS对象:

var pcbClientEvent = {
    eventType: {
        common: {
            user: null,
            pcbid: null,
            notes: null
        },
        assign: {
            sbePN: null,
            sbeJobNumber: null,
            sbeSerialNumber: null,
            sbeModelNumber: null
        }
    }
};

并在填写表单后对其进行操作(请参见上方的小提琴链接中的完整示例):

pcbClientEvent.eventType.common.user = $("#input_common_user").val() !== undefined ? $("#input_common_user").val() : pcbClientEvent.eventType.common.user;
pcbClientEvent.eventType.common.pcbid = $("#input_common_pcbid").val() !== undefined ? $("#input_common_pcbid").val() : pcbClientEvent.eventType.common.pcbid;
pcbClientEvent.eventType.common.notes = $("#input_common_notes").val() !== undefined ? $("#input_common_notes").val() : pcbClientEvent.eventType.common.notes;
pcbClientEvent.eventType.assign.sbePN = $("#input_assign_sbePN").val() !== undefined ? $("#input_assign_sbePN").val() : pcbClientEvent.eventType.assign.sbePN;
pcbClientEvent.eventType.assign.sbeJobNumber = $("#input_assign_sbeJobNumber").val() !== undefined ? $("#input_assign_sbeJobNumber").val() : pcbClientEvent.eventType.assign.sbeJobNumber;
pcbClientEvent.eventType.assign.sbeSerialNumber = $("#input_assign_sbeSerialNumber").val() !== undefined ? $("#input_assign_sbeSerialNumber").val() : pcbClientEvent.eventType.assign.sbeSerialNumber;
pcbClientEvent.eventType.assign.sbeModelNumber = $("#input_assign_sbeModelNumber").val() !== undefined ? $("#input_assign_sbeModelNumber").val() : pcbClientEvent.eventType.assign.sbeModelNumber;

参考方案

JSON是一种轻量级的数据交换格式。从JSON角度考虑应用程序的数据模型可能会有所帮助,但这并不意味着可以直接在代码中进行操作。声明和修改运行时对象,将其序列化为JSON进行传输,然后解析它以在接收端实例化等效的运行时对象,这是更自然的选择。 JSON.net只是应用程序ASP.NET后端的许多优秀JSON库之一。

特别是对于空值,JSON直接支持这些值。例如,考虑以下Javascript对象:

var myObject = {
    a: "a string",
    b: 73,
    n : null
};

myObject上执行JSON.stringify的结果是:

 { "a": "a string", "b": 73, "n": null }

方法应该是操纵运行时对象并生成JSON,而不是组装JSON文本片段。

尝试重新编写示例以在Javascript中构建代表性的运行时对象,然后直接设置值(包括null值)。如果您的模型中有一个节点应该用JSON表示,但完全为空(所有null值),只需确保在模型的该位置分配合适的占位符对象。然后使用JSON.stringify查看结果是否符合您的期望。

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

改造正在返回一个空的响应主体 - java

我正在尝试使用Retrofit和Gson解析一些JSON。但是,我得到的响应机构是空的。当我尝试从对象中打印信息时,出现NullPointerException。我确保URL正确,并且我也确保POJO也正确。我正在使用jsonschema2pojo来帮助创建POJO类。这是我要解析的JSON{ "?xml": { "@versi…

如何从php中获取datatables jQuery插件的json数据 - php

我是PHP的新手,正在尝试使用Datatables jQuery插件。我知道我必须从.php文件中获取数据,然后在数据表中使用它,但是我似乎无法通过ajax将其传递给数据表。我设法从数据库中获取数据,并对其进行json编码,但是后来我不知道如何在我的index.php文件中调用它,并在其中显示它。我究竟做错了什么?这是我的代码:HTML(已编辑): <…

每个文件合并后添加换行 - python

我有很多类似以下内容的JSON文件:例如。1.json{"name": "one", "description": "testDescription...", "comment": ""} test.json{"name"…

Json到php,json_decode返回NULL - php

我正在用PHP进行JSON解析器的一些API,用于存储有关遗产的信息。我在解析时遇到问题,因为它返回的是NULL值而不是数组或对象。简单的JSON代码可以很好地解析,但是可以这样:{"success":true,"totalCount":1,"data":[{"id":99694…