gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 12:39:47 25 4
gpt4 key购买 nike

我的项目将使用 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"
}
}
}

对于每个事件,公共(public)节点将始终被填充,并且根据事件类型(分配、创建、修改等),某些数据将被填充,而其余可用变量将不会被填充。为了简洁起见,我只包含了分配节点,但它下面还有其他五个稍微复杂的节点。

我想我可以将JS中的变量预先分配给nullJSONObject.NULL,然后使用三元语句将其分配给它的真实值(如果由用户,或将其保留为空。我的想法是,我不必在后面的 C# 代码中进行大量重载,我只需传入一大堆 JSON,并根据填充的内容或留空的内容来确定如何处理它。这是我尝试声明变量的一种方法:

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

这些显示为 JSONObject undefined,如果我将它们声明为 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 对象,但我遗漏了一些东西。我还怀疑 JSONObject.NULL 可能不是 Javascript 构造,因为我实际上只能在 Android 和 Java 文档中找到它的引用,但似乎我仍然应该能够使用 null 在它的位置?

所以,我的问题是,如何将空值获取到 JSON 对象中,作为用户可能填充或不填充的文本/整数/ bool 值的占位符?

编辑以显示功能代码(请参阅上面的 fiddle 链接中的完整示例):

声明我的 JS 对象:

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

并在填写表单后对其进行操作(请参阅上面的 fiddle 链接中的完整示例):

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 库之一。

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

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

执行结果JSON.stringify myObject 上是:

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

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

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

关于c# - 如何在 JSON 对象中包含 null 作为占位符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23574166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com