我需要我的WCF應用程序返回的複雜類型WCF JSONP返回複雜類型
============================ ==
情況1只是2個字段。不需要浪費任何人的時間w/
==============================
//情況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"]}}
==============================
//殼體3 - 2維數組
如果返回類看起來像這樣
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」); // return r;
谷歌報告
ERR_CONNECTION_RESET
IE9報告
•Internet連接已丟失。
•網站暫時不可用。
我的預期是什麼這個
{"GetStringArrayResult":{"Key":"myKey",
"Message":"myMessage",
"field":{
"fieldName":"name".
"datatype":"varchar(32)",
"value":"bob"
}
}
}
================================
我覺得我已經非常明顯地證明了wcf在爲嵌入式對象構建JSON時遇到問題。它沒問題瓦特/陣列。
有什麼想法?
有沒有理由複雜的對象不能退回?
我可以關閉wcf的jsonp實現並自己做?