1

私は次のJSONを持っています:

{ "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 を取得する理由がわかりません。

4

2 に答える 2

0

シリアル化するオブジェクトを返す json で文字列を返すべきではありませんjsonResponseFormatまた、デフォルト設定であるを削除できるはずですjson

この回答を見てください:[ScriptMethod(ResponseFormat = ResponseFormat.Json)]

スクリプト メソッドを機能させる方法について説明します。

これをシリアル化するためのオブジェクト モデルがない場合は、WCF を使用するのに苦労することになります。これは、.net オブジェクトを json または xml にシリアル化するという原則に基づいて設計されています。

あなたがjson文字列を持っているなら、私はナンシーのようなものを使います.

このようなもののための nancy モジュールは次のようになります:

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");
            }
        }
    }
}
于 2012-06-04T07:43:52.513 に答える
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; }
}
于 2012-06-04T07:49:17.380 に答える