我需要我的wcf应用程序返回复杂类型
==============================
案例1只是2个字段。没有必要浪费任何人的时间
==============================
// case 2 - 1 dim array
如果返回类型如下所示
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"]}}
==============================
//案例3 - 2 dim array
如果返回类看起来像这样
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"]
]
}
}
==============================
你会注意到我没有JSONifying任何东西。我只是返回r而且它得到了 JSONP由wcf编辑。
我在尝试使用JSON时遇到了困难,然后WCF双JSON' ed它真的让结果变得难看。用户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 = new fieldd(" name"," varchar(32)"," bob"); //返回r;
谷歌报道
ERR_CONNECTION_RESET
ie9报告
•互联网连接已丢失
•网站暂时无法使用。
我的期望是这个
{"GetStringArrayResult":{"Key":"myKey",
"Message":"myMessage",
"field":{
"fieldName":"name".
"datatype":"varchar(32)",
"value":"bob"
}
}
}
================================
我觉得我已经相当地证明了wcf在为嵌入式对象构建JSON时遇到了问题。它很好w /数组。
任何想法?
是否有某种原因导致复杂的物体无法返回?
我可以关闭wcf的jsonp实现并自己动手吗?
答案 0 :(得分:0)
我希望答案更复杂......
尝试了很多东西之后,我尝试取出构造函数。成功。 在尝试了更多的东西之后......对象必须有一个带有空白签名的构造函数。你可以有其他构造函数,也只有一个空白构造函数。
如果没有带空签名的构造函数,将导致jsonp逻辑崩溃。这在光标退出代码并在某处的WCF代码中游动后发生。
我在几个月的时间里多次回到这个问题。 一个好消息的例外会有所帮助,但这就是生活......
格雷格