ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript - Json オブジェクトのフラット化

JavaScript - Json オブジェクトのフラット化

高洛峰
高洛峰オリジナル
2016-11-25 14:15:041555ブラウズ

はじめに:

Asp.net mvc フレームワークで複雑な Json オブジェクトを Action メソッドに送信するために Ajax メソッドを使用すると、いくつかの問題が発生します。ここでは、JavaScript を使用してこの問題を解決します。 3.0 この問題を解決するには JsonValueProviderFactory を使用しますが、ここでは純粋な JS を使用したこの問題の解決策を示します。このメソッドは mvc 2.0 の古いシステムでも使用できます。

次のオブジェクト構造のような複雑なオブジェクトを送信する必要があります:

1 {

2 ホテル名:'abc',

3 ホテル住所:' No. 72, Haidian Road, Beijing',

4 部屋: [ {roomName:'Standard Room ', root: 720},

5 {RoomName:luxury room, roomprice: 1020}],

6 Hotelstar: 4

7}

8 // 現時点では、 Action オブジェクトのバックグラウンドに正しく送信されるようにするには、次の形式に変換する必要があります。

9

10

11 {

12 ホテル名:'abc',

13 ホテル住所:'No. 72, Haidian Road, Beijing',

14 部屋[0]: {部屋名:'スタンダード ルーム' ,roomPrice: 720},

15 Rooms[1]: {roomName:Deluxe Room,roomPrice:1020},

16 HotelStar:4

17 }

18 //フォーマット変換コード:

19

20 var Convert= {

21 _jsonFlat:function (data,parentPro, returnObj) {

22 if (オブジェクトのデータインスタンス) {

23 for (データ内のvarpro) {

24 try{

25 varproValue = eval( "data. " +pro.toString());

26 if(proValue instanceof Array) {

27 " for (var i = 0; i

28 If (parentPro) {

29 Convert._jsonFlat(proValue[i],parentPro + "." + pro + "["+ i + "]", returnObj); Convert._jsonFlat(proValue[i], pro + " [" + i +"] "、returnobj);

33} convert。_jsonflat(provalue、parentpro +"

45 returnObj[parentPro + "." + プロ] = プロ値; 

46 else

47 returnObj[pro] =proValue; 

48

49 }

50 catch(e) { }; 

51 }

52 戻る; 

53 }

54 //その他、string/int/datetime 形式と同様

55 returnObj[parentPro] = data; 

56 },jsonFlat: function(data) {

57 //デバッガ; 

58 if(データ && オブジェクトのデータ インスタンス) {

59 varretObj = {}; 

60 Convert._jsonFlat(data, null, retObj); 

61 returnretObj; 

62 }

63 null を返します。 

64 },

65 }

解: 上記のコードは、Json オブジェクト形式の変換を完了します。変換後の Json オブジェクトは、後の台の Action メソッドにのみ渡されます。历json オブジェクト上のすべて

调用例子

view sourceprint?

1 $.ajax({

2 url: "controller/action",

3 data:Convert.jsonFlat({/*your json data* /}),

4 success: function(){

5 $(this).addClass("done");

6 }

7 });

3.0以降Mvc已经内置注册了JsonValueProvidエルファクトリー、その後、js を使用せずに、ajax メソッドを直接使用して扁平化を行うことができます: "controller/action",

data:{/*json データ*/},

contentType: "application/json",

success: function(){

$(this).addClass("done" );

}

});

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。