如何从JSON Schema默认构造JavaScript对象?

时间:2012-10-01 17:20:02

标签: javascript json jsonschema

我已经开始在我的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#)。这包括所有元数据,如默认值,描述文本,有效范围等。

2 个答案:

答案 0 :(得分:0)

是的(我尝试过NodeJS):

JSON Schema defaults

答案 1 :(得分:-1)

我认为......您必须使用双向绑定HTML代码...因此,一旦您的客户端更改,您将获得您的服装js文件。

点击这里查看淘汰赛。

Knock Out JS Link

和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);