【问题标题】:How to parse JSON data into object instance in Bridge.NET?如何将 JSON 数据解析为 Bridge.NET 中的对象实例?
【发布时间】:2015-06-05 04:24:35
【问题描述】:

我正在开发一个基于模板数据动态创建 Bootstrap 表单的 Bridge.NET 项目。通过jQuery.Ajax 调用以JSON 形式接收数据。

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

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

其中 Form 是一个描述引导表单的类,类似于:

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

上面的代码行构建了,但是生成的 JavaScript 的行为就像 form 没有被实例化,所以下面的代码失败了:

var title = form.Title;

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

【问题讨论】:

  • 好问题。这可能是在Form 类上使用[ObjectLiteral] 属性的地方。我必须进行一些测试才能确认。
  • 我已经用一个完整的代码示例更新了我的答案,该示例在最新版本的 Bridge.NET 中按预期工作。

标签: jquery ajax json parsing bridge.net


【解决方案1】:

以下示例演示了完整的场景。

示例

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

希望这会有所帮助。

【讨论】:

  • @dpant - 使用最新版本的 Bridge.NET (v1.1),您的原始方案应该可以按预期工作。
  • 非常好,确实如此。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-18
  • 1970-01-01
  • 1970-01-01
  • 2017-03-18
相关资源
最近更新 更多