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

问题描述 投票:7回答:2

我已经开始在我的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#)。这包括所有元数据,例如默认值,描述文本,有效范围等。
javascript json jsonschema
2个回答
0
投票

是的(我试过NodeJS):

JSON Schema defaults


-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 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);  
© www.soinside.com 2019 - 2024. All rights reserved.