我已经开始在我的C#代码中使用Newtonsoft.Json.Schema.JsonSchemaGenerator以及各种属性属性来帮助保持我的客户端脚本DRY。我想要做的是根据服务器的架构创建一个默认的初始化对象客户端。例如,当用户点击“New Foo”将新条目添加到表格中时,这将非常有用。
显然我可以编写代码来迭代.Properties并构建新对象,这就是我现在正在做的事情。但是我宁愿避免重新发明轮子。
是否有任何用于处理JSON模式的JS库可以实现这一点,还有其他一些我尚未意识到的需要的东西?
2013年1月29日更新
有些人试图回答我的问题而已经离开了基地,结果收到了SO社区的一些负面反馈。所以让我试着澄清一些事情。这是挑战:
在JS客户端脚本中,您有一个对象,表示另一个对象的JSON 架构。比方说,这来自服务器通过JSON.NET,是C#类的表示。
现在,在JS客户端脚本中,根据JSON 架构创建其中一个对象。必须根据模式默认初始化对象中的每个字段/属性,包括所有包含的对象!
BONUS:使用MVVM将此新对象绑定到UI(例如Knockout)。更改一些字段以响应用户输入。
将此新对象发送到服务器。服务器端代码将它添加到集合,数据库表,等等。 (是的,该对象将使用Ajax作为JSON发送 - 我们可以假设)
无重复!定义类的唯一位置是服务器端代码(在我的示例中为C#)。这包括所有元数据,如默认值,描述文本,有效范围等。
答案 0 :(得分:0)
是的(我尝试过NodeJS):
答案 1 :(得分:-1)
我认为......您必须使用双向绑定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字符串...检查下面的代码//将字符串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);