0

データベースからの値を一覧表示するJSONがあります。以下は、データベースからの2行のJSONデータです。

[{"Name":"P1","Description":"pd1","Value":"v1","Attribute":"a1"},{"Name":"P1","Description":"pd1","Value":"v2","Attribute":"a2"}]

データベース値は、左結合クエリの結果です。「値」フィールドと「属性」フィールドのみが異なります。複数のレコードセットではなく、そのフィールドをJSONに追加できますか?これを行うための「プッシュ」があることは知っていますが、コードのどこでどのようにこれを使用するかはわかりません。以下は、dbから値をフェッチし、値をシリアル化するためのコードです。

GetProfileDataService GetProfileDataService = new BokingEngine.MasterDataService.GetProfileDataService();
IEnumerable<ProfileData> ProfileDetails = GetProfileDataService.GetList(new ProfileSearchCriteria { Name = strProfileName });
JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
string strSerProfileDetails = javaScriptSerializer.Serialize(ProfileDetails);
context.Response.ContentType = "text/json";
context.Response.Write(strSerProfileDetails);

以下は私のgetJSONです

$(document).ready(function () {
    $.getJSON('ProfileHandler.ashx', { 'ProfileName': 'Profile 1' }, function (data) {
        $.each(data, function (k, v) {
            alert(v.Attribute+' : '+v.Value);               
        });            
    });
});

ここで私を助けてください。

4

1 に答える 1

0

できることがいくつかあります。

値と属性を配列として格納します。

[{"Name":"P1","Description":"pd1","Value":["v1", "v2"],"Attribute":["a1", "a2"]}]

または、それらを「記号」で区切られた文字列として格納します。

[{"Name":"P1","Description":"pd1","Value":"v1;v2"],"Attribute":"a1;a2"]}]

最初のケースを使用するには、javaScriptSerializer.Serializeで正しく解析するために、ProfileDetailsをフォーマットする方法を試してみる必要があります。これを機能させるには、最初にデータを変換する必要があります(つまり、属性を配列に変換します)。

2番目のケースが機能するようにするには、GetProfileDataService.GetListメソッドを変更して、値と属性がシンボルで区切られた文字列にマージされるようにします(次のように:GROUP BYを使用して列を結合/連結します) 。

于 2013-03-11T13:18:44.277 に答える