.net - 将特定 .net 对象公开为 JSON

标签 .net web-services json

我目前正在使用 ScriptService 属性启用对 Web 服务的 JSON 调用。问题是我的一个类引用了第二个类,而 .Net 没有为第二个类拾取并编写 JavaScript。

作为一种解决方法,我可以编写一个仅返回第二个类的虚拟方法。然后.Net 写入 JSON 以允许其序列化。所以在下面的例子中:

[ScriptService]
public class MyService : WebService {
    [WebMethod]
    public void SaveClass1(Class1 class1) {
        ...
    }
}

[Serializable]
public class Class1 {
    public Class2 class2 { get; set; }
}

[Serializable]
public class Class2 {
}

MyService.asmx/js 不会编写代码来允许我实例化 Class2 以便填充 Class1。但如果我添加以下内容,我就可以让它工作:

[WebMethod]
public Class2 Dummy() {
    return new Class2();
}

到我的服务。任何替代我讨厌的解决方法的方法都将不胜感激。

最佳答案

您需要使用System.Web.Script.Services.GenerateScriptTypeAttribute ,它指定服务器类型应包含在生成的代理代码中。您可以将此属性应用于 Web 服务本身或任何标有 WebMethodAttribute 的方法。 .

例如:

[ScriptService]
[GenerateScriptType(typeof(Class2))]
public class MyService : WebService {
    [WebMethod]
    public void SaveClass1(Class1 class1) {
        // ...
    }
}

关于.net - 将特定 .net 对象公开为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/451420/

相关文章:

C# Cookie - Expires 属性不会设置

c# - 我应该使用 .NET 应用程序部署 Interop.x.dll 文件吗?

c# - 如何在Web服务中使用WSDL生成的代理类?

java - 如何从其他应用程序检索 Spring-batch 作业历史记录?

json - 经典的 ASP JSON 子集

java - 如何从 JSON 反序列化为 LocalDate,同时还使用 JsonGenerator.Feature.WRITE_NUMBERS_AS_STRINGS?

c# - IndexOf() 与 Replace() 和零宽度非连接器

c# - MySqlHelper 类中的事务锁

web-services - JMeter 和 Java Web 服务在下类后停止

json - 如何以 JSON 格式表示 clang AST?