2012-06-04 47 views
1

我有以下JSON:返回JSON沒有XML

{ "Test": {"Header": {"Description": "OK", "Status": "000", "Timestamp": "1338805752" }, "Results": {"Sport": {"Country": { "League": [ {"Name": "ECB 40 League", "TargetURL": "\/Cricket\/International\/ECB 40 League", "Total": "5" }, {"Name": "Friends Life T20 2012", "TargetURL": "\/Cricket\/International\/Friends Life T20 2012", "Total": "0" }, {"Name": "Sri Lanka vs Pakistan (ODI Series)", "TargetURL": "\/Cricket\/International\/Sri Lanka vs Pakistan (ODI Series)", "Total": "0" }, {"Name": "Sri Lanka vs Pakistan 1st ODI", "TargetURL": "\/Cricket\/International\/Sri Lanka vs Pakistan 1st ODI", "Total": "1" }, {"Name": "Test Series", "TargetURL": "\/Cricket\/International\/Test Series", "Total": "1" } ], "Name": "International", "TargetURL": "\/Cricket\/International", "Total": "6" }, "Name": "Cricket", "Total": "5" } } }} 

當我從我的C#代碼返回它,我得到這樣說:

<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">{ "HotOdds": {"Header": {"Description": "OK", "Status": "000", "Timestamp": "1338805752" }, "Results": {"Sport": {"Country": { "League": [ {"Name": "ECB 40 League", "TargetURL": "\/Cricket\/International\/ECB 40 League", "Total": "5" }, {"Name": "Friends Life T20 2012", "TargetURL": "\/Cricket\/International\/Friends Life T20 2012", "Total": "0" }, {"Name": "Sri Lanka vs Pakistan (ODI Series)", "TargetURL": "\/Cricket\/International\/Sri Lanka vs Pakistan (ODI Series)", "Total": "0" }, {"Name": "Sri Lanka vs Pakistan 1st ODI", "TargetURL": "\/Cricket\/International\/Sri Lanka vs Pakistan 1st ODI", "Total": "1" }, {"Name": "Test Series", "TargetURL": "\/Cricket\/International\/Test Series", "Total": "1" } ], "Name": "International", "TargetURL": "\/Cricket\/International", "Total": "6" }, "Name": "Cricket", "Total": "5" } } }}</string> 

下面是函數的定義:

[OperationContract(Name = "GetHOSports")] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
string GetSportsList(DateTime date, int sportID); 

我不明白爲什麼我得到XML元素內的JSON,任何人?

回答

0

你做完了系列化:

TestRootObject testRootObject = new TestRootObject(); 
    ...................... 
    ..............YOUR CODE.............. 
    .................. 
    System.Web.Script.Serialization.JavaScriptSerializer oSerializer = 
      new System.Web.Script.Serialization.JavaScriptSerializer(); 
    return oSerializer.Serialize(testRootObject); 

你的C#類:

public class Header 
{ 
    public string Description { get; set; } 
    public string Status { get; set; } 
    public string Timestamp { get; set; } 
} 

public class League 
{ 
    public string Name { get; set; } 
    public string TargetURL { get; set; } 
    public string Total { get; set; } 
} 

public class Country 
{ 
    public List<League> League { get; set; } 
    public string Name { get; set; } 
    public string TargetURL { get; set; } 
    public string Total { get; set; } 
} 

public class Sport 
{ 
    public Country Country { get; set; } 
    public string Name { get; set; } 
    public string Total { get; set; } 
} 

public class Results 
{ 
    public Sport Sport { get; set; } 
} 

public class Test 
{ 
    public Header Header { get; set; } 
    public Results Results { get; set; } 
} 

public class TestRootObject 
{ 
    public Test Test { get; set; } 
} 
+0

是的,我得到相同的輸出。 –

+0

@IdoLazar查看我更新的答案。你是否創建了C#類來生成你想要的JSON。 –

0

你不應該返回一個字符串與json返回你想要序列化到json的對象。您應該也可以刪除ResponseFormat它的默認設置是json

看一看這個答案:[ScriptMethod(ResponseFormat = ResponseFormat.Json)]

解釋如何讓你的腳本方法的工作。

如果您沒有對象模型來將其序列化,那麼您將很難使用WCF。它圍繞將.net對象序列化爲json或xml的原則而設計。

如果你有json字符串,我會選擇像Nancy這樣的東西,它給你更多的自由去做你喜歡的事情:),其中包括如果你想要json字符串。

像這樣服用點

一個南希模塊應該是這樣的:

public class SampleModule : Nancy.NancyModule 
{ 
    public SampleModule() 
    { 
     Get["/GetHOSports"] = parameters => { 
      Response.ContentType = "application/json" 
      Response.Content = s => { 
       var sw = new StreamWriter(s) { AutoFlush = true }; 
       sw.Write("your json here"); 
      } 
     } 
    } 
} 
+0

你能舉個例?我有一個包含JSon的字符串,我應該如何返回它? –