Heim  >  Artikel  >  Web-Frontend  >  JavaScript – Json-Objektreduzierung

JavaScript – Json-Objektreduzierung

高洛峰
高洛峰Original
2016-11-25 14:15:041555Durchsuche

Einführung:

Bei der Verwendung der Ajax-Methode zum Senden eines komplexen Json-Objekts an die Action-Methode im Asp.net MVC-Framework treten einige Probleme auf. Hier verwenden wir Javascript, um dieses Problem in ASP zu lösen Nach .net mvc 3.0 können Sie JsonValueProviderFactory verwenden, um dieses Problem zu lösen, aber hier geben wir eine Lösung für dieses Problem mit reinem js. Diese Methode kann auch im alten System von mvc 2.0 verwendet werden.

Sie müssen ein komplexes Objekt wie die folgende Objektstruktur einreichen:

1 {

2 hotelName:'abc',

3 hotelAddress: ' Beijing Haidian Road No. 72',

4 Zimmer:[ {roomName:'Standard Room',roomPrice:720},

5    {roomName:Deluxe Room,roomPrice:1020}] ,

6 HotelStar:4

7 }

8 //Zu diesem Zeitpunkt müssen wir es in das folgende Format konvertieren, um es korrekt an das Hintergrund-Aktionsobjekt zu übermitteln.

9

10

11 {

12 hotelName:'abc',

13 hotelAddress:' No. 72, Haidian Road, Beijing ',

14 Zimmer[0]: {roomName:'Standard Room',roomPrice:720},

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

16 HotelStar:4

17 }

18 //Formatkonvertierungscode:

19

20 var Convert ={

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

22 if (data instanceof Object) {

23 for (varpro in data) {

24                                                                                                                                                                                                                                                          ) {

27 for ( var i = 0; i

28 if (parentPro){

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

30 }

31                                                                         Convert._jsonFlat(proValue [i], pro + "[ " + i + "]",returnObj);

33                                                                                                                                 

37 if(parentPro)

38 Convert._jsonFlat(proValue, parentPro + „.“+ pro, returnObj); parentPro)

45                         returnObj[parentPro + "." + pro] = proValue; 

46                     else 

47                         returnObj[pro] =proValue; 

48   

49                 } 

50                 Catch(e) { }; 

51             } 

52             Rückkehr; 

53         } 

54         //otherwiselike string/int/datetime format 

55         returnObj[parentPro] = data; 

56     },jsonFlat: function(data) { 

57         //debugger; 

58         if(data && data instanceof Object) { 

59             varretObj = {}; 

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

61             returnretObj; 

62         } 

63         return null; 

64     }, 

65 } 

解释:以上代码就是完成Json对象格式的转换,只有通过转换后的复杂Json对象才能提交到后台的Action 方法上.JsonFloat方法运用递归遍历json对象上的所有属性进行扁平化转换.

调用例子

Quelle drucken?

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已经内置注册了JsonValueProviderFactory, 然后就可以直接这样调用ajax方法而不需要用js进行扁平化了: 

但是这里需要注意的是contentType 必需设置成application/json.

view sourceprint?

$.ajax({

  url: "controller/action",

  data:{/*your json data*/},

  contentType: "application/json",

  success: function(){

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

  }

} );


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn