我的項目將使用一個HTML 5,& jQuery Mobile前端,並通過AJAX將JSON數據傳回&,然後轉到與MySQL數據庫交談的C#ASP.NET後端(下面的示例不顯示任何後端C#, MySQL或AJAX代碼)。如何在佔位符中包含JSON對象中的空值?
我已經想通了什麼我的JSON對象(?字符串)會的樣子,這裏是一個簡化版本,以節省空間:
{
"Events": {
"Common": {
"User": "string",
"PCBID": 52759,
"Notes": "string"
},
"Assign": {
"SBEPN": "string",
"SBEJobNumber": "string",
"SBESerialNumber": "string",
"SBEModelNumber": "string"
}
}
}
對於每一個事件,公共節點總是會根據事件類型(分配,創建,修改等),一些數據將被填充,剩下的可用變量將不會被填充。爲了簡潔起見,我只包含Assign節點,但下面還有五個更復雜的節點。
我想我可以預先將JS中的變量分配給null
或JSONObject.NULL
,然後使用三元語句將其賦值爲真值(如果由用戶提供)或將其保留爲空。這個想法是,我不必在後面的c#代碼中產生一堆重載,我只需傳入一大堆JSON,並根據已填充的內容或留空即可找出如何處理它。這裏有一種方法我試過來聲明變量:
var user = JSONObject.NULL;
var pcbid = JSONObject.NULL;
var notes = JSONObject.NULL;
etc...
這些顯示爲JSONObject的不確定,如果我不是聲明爲空,這樣的:
var user = null;
var pcbid = null;
var notes = null;
etc...
它們顯示爲未定義而不是無論我是否使用JSON.stringify它們。
這是我如何分配字符串變量:
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。
我故意只在這個例子中填充兩個字段來簡化測試。我希望得到一個JSON對象,我可以(最終)將它交給AJAX,但我錯過了一些東西。我也懷疑JSONObject.NULL
可能不是Javascript構造,因爲我實際上只能在Android & Java文檔中找到它的參考,但它仍然看起來像我應該能夠在它的地方使用null
?
所以,我的問題是,我怎樣才能得到null值到一個JSON對象作爲佔位符的文本/ ints /布爾值,可能會或可能不會填充的用戶?
編輯顯示功能代碼(請參閱完整的例子在上面的小提琴鏈接):
要聲明我的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;
由於喬爾,你幫助清理我的一個根本性的誤解。我花了幾個小時,以找出如何創建JS對象(而不是一個JSON對象真的有沒有這樣的事),然後從我的表單輸入填充它,但我有現在的工作。我已經更新了OP中的小提琴,我將用工作代碼更新OP。再次感謝。 – delliottg
@delliottg樂於助人。 –