![](/img/trans.png)
[英]how to construct a json object using info from several javascript arrays
[英]How to default construct JavaScript object from JSON Schema?
我已經開始在我的C#代碼中使用Newtonsoft.Json.Schema.JsonSchemaGenerator以及各種屬性屬性來幫助保持我的客戶端腳本DRY。 我想要做的是根據服務器的架構創建一個默認的初始化對象客戶端。 例如,當用戶單擊“New Foo”以將新條目添加到表中時,這將非常有用。
顯然我可以編寫代碼來迭代.Properties並構建新對象,這正是我目前正在做的事情。 但是我寧願避免重新發明輪子。
是否有任何用於處理JSON模式的JS庫可以做到這一點,還有其他一些我尚未意識到的需要的好東西?
2013年1月29日更新
有些人試圖回答我的問題而已經離開了基地,結果收到了SO社區的一些負面反饋。 所以讓我試着澄清一些事情。 這是挑戰:
在JS客戶端腳本中,您有一個對象,它表示另一個對象的JSON 模式 。 比方說,這來自服務器通過JSON.NET,是C#類的表示。
現在,在JS客戶端腳本中,基於JSON 模式創建其中一個對象。 必須根據模式默認初始化對象中的每個字段/屬性,包括所有包含的對象!
獎勵:使用MVVM將此新對象綁定到UI(例如Knockout)。 更改一些字段以響應用戶輸入。
將此新對象發送到服務器。 服務器端代碼將它添加到集合,數據庫表,等等。 (是的,該對象將使用Ajax作為JSON發送 - 我們可以假設)
沒有重復 ! 定義類的唯一位置是服務器端代碼(在我的示例中為C#)。 這包括所有元數據,例如默認值,描述文本,有效范圍等。
是的(我試過NodeJS):
我認為......你必須使用雙向綁定HTML代碼...所以,一旦你的客戶端改變你將獲得你的服裝js文件。
在這里查看淘汰賽。
在C#代碼上使用:$(“#urlhidden”)。val()或Document.GetElemenyByID(“#urlhidden”)。val()。
在這里,您將獲得數組/列表或文本框值
使用json和Ko
為knockout js創建新的viewmodel,你將在上面的鏈接上獲得想法。
並創建一個json調用,如:
self.LoadMAS_Client = function () {
try {
var params = { "clientID": ClientId };
$.ajax({
type: "POST",
url: "http://" + ServerString + "/Services/LogisticsAppSuite-Services-Web-Services-MasClientService.svc/Json/GetAllLevelSubClients",
contentType: 'application/json',
data: JSON.stringify(params),
dataType: 'json',
async: false,
cache: false,
success: function (response) {
// in response u will get the data.and use as per your requirement.
eg. self.SelectedClient(response.your value);
},
error: function (ErrorResponse) {
}
});
}
catch (error) {
}
};
================================新更新================ ==========================我認為..你可以做的一種方式...在C#代碼中獲取xml格式的數據並轉換為json string ...檢查下面的代碼//將字符串xml中包含的XML節點轉換為JSON字符串
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
string jsonText = JsonConvert.SerializeXmlNode(doc);
// To convert JSON text contained in string json into an XML node
XmlDocument doc = (XmlDocument)JsonConvert.DeserializeXmlNode(json);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.