我需要我的wcf应用程序返回复杂类型
==============================
情况1只是2个字段。
==============================
//case 2-1维数组
如果返回类型如下所示
public class TestResult
{
public string Key = "myKey";
public string Message = "myMessage";
public string[] fields;
} r.fields = new string[] { "name", "varchar(32)", "bob" };
return r;我得到了我想要的
{"GetStringArrayResult":{"Key":"myKey",
"Message":"myMessage",
"fields":["name","varchar(32)","bob"]}}==============================
//case 3-2 dim数组
如果返回的类如下所示
public class TestResult
{
public string Key = "myKey";
public string Message = "myMessage";
public string[][] fields;
}它的实现如下所示
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;然后我会在浏览器中得到我所期望的结果
{"GetStringArrayResult":{"Key":"myKey",
"Message":"myMessage",
"fields":[
["fname","varchar(32)","bob"],
["lname","varchar(50)","smithersonsonson"],
["age","varchar(32)","40"]
]
}
}==============================
当我尝试JSON它,然后WCF双JSON它,这真的使结果丑陋的时候,我以一种艰难的方式了解到这一点。用户error.fine。
==============================
因此,下一步是拥有复杂的对象,这样我们就不会有所有这些数组挂在一起。
//案例4-单个嵌入对象
所以如果我像这样定义一个简单的类
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 {
public string Key = "myKey";
public string Message = "myMessage";
public fieldd field ;
}我的实现如下所示
r.field =新字段d(“name”,"varchar(32)","bob");//返回r;
谷歌报告
ERR_CONNECTION_RESET
ie9报告
·互联网连接中断。
·该网站暂时不可用。
我所期待的是这个
{"GetStringArrayResult":{"Key":"myKey",
"Message":"myMessage",
"field":{
"fieldName":"name".
"datatype":"varchar(32)",
"value":"bob"
}
}
}================================
我觉得我已经相当好地证明了wcf在为嵌入式对象构建JSON时遇到了问题。它在使用数组时做得很好。
有什么想法吗?
有没有什么复杂的对象不能被返回的原因?
发布于 2014-05-10 04:27:58
我希望答案能更复杂些。
在尝试了很多方法之后,我试着去掉构造器。成功。在尝试了更多的东西之后...对象必须有一个带有空白签名的构造函数。你可以有其他的构造函数,也可以有一个空白的构造函数。
没有带空白签名的构造函数将导致jsonp逻辑崩溃。这发生在游标退出代码并游到WCF代码中的某个地方之后。
在几个月的时间里,我多次回到这个问题上。一条好消息的例外可能会有所帮助,但这就是生活...
格雷格
https://stackoverflow.com/questions/23572784
复制相似问题