2015-03-31 35 views
2

我正在致力于Bridge.NET项目,该项目根据模板数据动态创建Bootstrap表单。数据以JSON的形式通过jQuery.Ajax调用接收。如何将JSON数据解析到Bridge.NET中的对象实例?

的问题是,在成功接收我不能JSON数据转换回它们的对象表示,例如:

Form form = Bridge.Html5.JSON.Parse<Form>((string)data); 

其中是描述一个引导形成一类,像这样:

public class Form 
{ 
    public string Title { get; set; } 
    public Field[] Fields { get; set; } 
} 

上面行构建但生成的JavaScript的行为类似于form不会被实例化,所以下面的代码失败:

var title = form.Title; 

任何人有什么想法或解决方法如何使其工作?

+0

好问题。这可能是在Form类中使用'[ObjectLiteral]'属性的地方。我将不得不运行一些测试来确认。 – 2015-03-31 18:09:10

+0

我已经用完整的代码示例更新了我的答案,该代码示例按照预期的方式与最新版本的Bridge.NET一起工作。 – 2015-04-08 23:26:15

回答

4

以下示例演示完整场景。

using Bridge; 
using Bridge.Html5; 

namespace Demo 
{ 
    public class App 
    { 
     [Ready] 
     public static void Main() 
     { 
      var data = "{ \"title\": \"testing\" }"; 
      Form form = JSON.Parse<Form>(data); 

      Console.Log(form.Title); // logs "testing" 
     } 
    } 

    public class Form 
    { 
     public string Title { get; set; } 
    } 
} 

以下是由编译器所发射:

Bridge.define('Demo.App', { 
    statics: { 
     config: { 
      init: function() { 
       Bridge.ready(this.main); 
      } 
     }, 
     main: function() { 
      var data = "{ \"title\": \"testing\" }"; 
      var form = Bridge.merge(new Demo.Form(), JSON.parse(data)); 

      console.log(form.getTitle()); // logs "testing" 
     } 
    } 
}); 

Bridge.define('Demo.Form', { 
    config: { 
     properties: { 
      Title: null 
     } 
    } 
}); 

希望这有助于。

+0

@dpant - 使用最新版本的Bridge.NET(v1.1),您的原始场景应该按预期工作。 – 2015-04-08 23:25:22

+0

非常好,它确实。非常感谢你。 – dpant 2015-04-09 08:07:05