首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wcf jsonp返回复杂类型

wcf jsonp返回复杂类型
EN

Stack Overflow用户
提问于 2014-05-10 03:48:10
回答 1查看 70关注 0票数 0

我需要我的wcf应用程序返回复杂类型

==============================

情况1只是2个字段。

==============================

//case 2-1维数组

如果返回类型如下所示

代码语言:javascript
复制
  public class TestResult
    {
        public string Key = "myKey";
        public string Message = "myMessage";
        public string[] fields;
     }  

代码语言:javascript
复制
 r.fields = new string[] { "name", "varchar(32)", "bob" };
 return r;

我得到了我想要的

代码语言:javascript
复制
{"GetStringArrayResult":{"Key":"myKey",
                         "Message":"myMessage",
            "fields":["name","varchar(32)","bob"]}}

==============================

//case 3-2 dim数组

如果返回的类如下所示

代码语言:javascript
复制
   public class TestResult
    {
        public string Key = "myKey";
        public string Message = "myMessage";
        public string[][] fields;
    }

它的实现如下所示

代码语言:javascript
复制
 string[] a1 =  { "fname", "varchar(32)", "bob"};
            string[] a2 = { "lname", "varchar(50)", "smithersonsonson" };
            string[] a3 = { "age", "varchar(32)", "40" };

            r.fields = new string [][]{a1,a2,a3};
            return r;

然后我会在浏览器中得到我所期望的结果

代码语言:javascript
复制
{"GetStringArrayResult":{"Key":"myKey",
                         "Message":"myMessage",
                          "fields":[
                    ["fname","varchar(32)","bob"],
                    ["lname","varchar(50)","smithersonsonson"],
                    ["age","varchar(32)","40"]
                ]
            }
}

==============================

当我尝试JSON它,然后WCF双JSON它,这真的使结果丑陋的时候,我以一种艰难的方式了解到这一点。用户error.fine。

==============================

因此,下一步是拥有复杂的对象,这样我们就不会有所有这些数组挂在一起。

//案例4-单个嵌入对象

所以如果我像这样定义一个简单的类

代码语言:javascript
复制
 public class fieldd
    {
        public string fieldName = "";
        public string datatype = "";
        public string value = "";

        public fieldd(string _fn, string _dt, string _v)
        {
            fieldName = _fn;
            datatype = _dt;
            value = _v;
        }
    }

如果我的结果类型如下所示

公共类TestResult {

代码语言:javascript
复制
    public string Key = "myKey";
    public string Message = "myMessage";
    public fieldd field ;

}

我的实现如下所示

r.field =新字段d(“name”,"varchar(32)","bob");//返回r;

谷歌报告

ERR_CONNECTION_RESET

ie9报告

·互联网连接中断。

·该网站暂时不可用。

我所期待的是这个

代码语言:javascript
复制
{"GetStringArrayResult":{"Key":"myKey",
                         "Message":"myMessage",
                          "field":{
                    "fieldName":"name".
                    "datatype":"varchar(32)",
                    "value":"bob"
                }
            }
}

================================

我觉得我已经相当好地证明了wcf在为嵌入式对象构建JSON时遇到了问题。它在使用数组时做得很好。

有什么想法吗?

有没有什么复杂的对象不能被返回的原因?

EN

回答 1

Stack Overflow用户

发布于 2014-05-10 04:27:58

我希望答案能更复杂些。

在尝试了很多方法之后,我试着去掉构造器。成功。在尝试了更多的东西之后...对象必须有一个带有空白签名的构造函数。你可以有其他的构造函数,也可以有一个空白的构造函数。

没有带空白签名的构造函数将导致jsonp逻辑崩溃。这发生在游标退出代码并游到WCF代码中的某个地方之后。

在几个月的时间里,我多次回到这个问题上。一条好消息的例外可能会有所帮助,但这就是生活...

格雷格

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23572784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档