2013-04-05 62 views
0

我正在做JSON解析,我有以下结果;重新排序类中的对象

{ 
"alias": { 
    "OUTLET_NAME": "OUTLET_NAME" 
}, 
"displayFieldName": "OUTLET_NAME", 
"feature": { 
    "features": [ 
     { 
      "attribute": { 
       "OUTLET_NAME": "CCK 24-hr Family Clinic" 
      }, 
      "geometry": { 
       "X": 17961.38, 
       "Y": 40715.6875 
      } 
     }, 
     { 
      "attribute": { 
       "OUTLET_NAME": "Central Clinic and Surgery (Bedok)" 
      }, 
      "geometry": { 
       "X": 39091.43, 
       "Y": 34142.043 
      } 
     }, 
     { 
      "attribute": { 
       "OUTLET_NAME": "Central Clinic and Surgery (Hougang)" 
      }, 
      "geometry": { 
       "X": 33835.53, 
       "Y": 39431.01 
      } 
     }, 
     { 
      "attribute": { 
       "OUTLET_NAME": "Central Clinic and Surgery (Yishun)" 
      }, 
      "geometry": { 
       "X": 27410.125, 
       "Y": 45743.45 
      } 
     }, 
     { 
      "attribute": { 
       "OUTLET_NAME": "Lifelink 24hrs Clinic and Surgery" 
      }, 
      "geometry": { 
       "X": 32343.502, 
       "Y": 39151.2266 
      } 
     }, 
     { 
      "attribute": { 
       "OUTLET_NAME": "Medihealth Bishan 24 Hours Clinic and Surgery" 
      }, 
      "geometry": { 
       "X": 29984.7734, 
       "Y": 36586.86 
      } 
     }, 
     { 
      "attribute": { 
       "OUTLET_NAME": "Mediline Wei Min Clinic" 
      }, 
      "geometry": { 
       "X": 36201.6328, 
       "Y": 31674.46 
      } 
     }, 
     { 
      "attribute": { 
       "OUTLET_NAME": "Novena Clinic 24 Hours" 
      }, 
      "geometry": { 
       "X": 29197.53, 
       "Y": 33659.6055 
      } 
     }, 
     { 
      "attribute": { 
       "OUTLET_NAME": "Raffles Medical Airport 24-hr Clinic" 
      }, 
      "geometry": { 
       "X": 44899.6836, 
       "Y": 37431.73 
      } 
     }, 
     { 
      "attribute": { 
       "OUTLET_NAME": "Silver Cross Family Clinic (Serangoon)" 
      }, 
      "geometry": { 
       "X": 32329.1758, 
       "Y": 37284.06 
      } 
     }, 
     { 
      "attribute": { 
       "OUTLET_NAME": "Shenton Family Medical Clinic (Bukit Gombak)" 
      }, 
      "geometry": { 
       "X": 18838.0039, 
       "Y": 37873.7656 
      } 
     }, 
     { 
      "attribute": { 
       "OUTLET_NAME": "Medihealth Bishan 24 Hours Clinic and Surgery" 
      }, 
      "geometry": { 
       "X": 39090.3164, 
       "Y": 34147.3477 
      } 
     }, 
     { 
      "attribute": { 
       "OUTLET_NAME": "Ang Mo Kio Polyclinic (NHG)" 
      }, 
      "geometry": { 
       "X": 29549.7285, 
       "Y": 39377.99 
      } 
     }, 
     { 
      "attribute": { 
       "OUTLET_NAME": "Bedok Polyclinic (Singhealth)" 
      }, 
      "geometry": { 
       "X": 38940.74, 
       "Y": 34247.7461 
      } 
     }, 
     { 
      "attribute": { 
       "OUTLET_NAME": "Bukit Batok Polyclinic (NHG)" 
      }, 
      "geometry": { 
       "X": 18479.2949, 
       "Y": 37117.1133 
      } 
     }, 
     { 
      "attribute": { 
       "OUTLET_NAME": "Choa Chu Kang Polyclinic (NHG)" 
      }, 
      "geometry": { 
       "X": 18832.752, 
       "Y": 40480.02 
      } 
     }, 
     { 
      "attribute": { 
       "OUTLET_NAME": "Clementi Polyclinic (NHG)" 
      }, 
      "geometry": { 
       "X": 20473.0254, 
       "Y": 32777.65 
      } 
     }, 
     { 
      "attribute": { 
       "OUTLET_NAME": "Geylang Polyclinic (Singhealth)" 
      }, 
      "geometry": { 
       "X": 33995.8047, 
       "Y": 33537.26 
      } 
     }, 
     { 
      "attribute": { 
       "OUTLET_NAME": "Hougang Polyclinic (NHG)" 
      }, 
      "geometry": { 
       "X": 34198.1172, 
       "Y": 39108.6953 
      } 
     }, 
     { 
      "attribute": { 
       "OUTLET_NAME": "Jurong Polyclinic (NHG)" 
      }, 
      "geometry": { 
       "X": 16596.166, 
       "Y": 36874.918 
      } 
     }, 
     { 
      "attribute": { 
       "OUTLET_NAME": "Marine Parade Polyclinic (Singhealth)" 
      }, 
      "geometry": { 
       "X": 36304.0234, 
       "Y": 31631.8926 
      } 
     }, 
     { 
      "attribute": { 
       "OUTLET_NAME": "Marine Parade Polyclinic (Singhealth)" 
      }, 
      "geometry": { 
       "X": 28576.2051, 
       "Y": 29132.0039 
      } 
     }, 
     { 
      "attribute": { 
       "OUTLET_NAME": "Tampines Polyclinic (Singhealth)" 
      }, 
      "geometry": { 
       "X": 40523.01, 
       "Y": 37716.5547 
      } 
     }, 
     { 
      "attribute": { 
       "OUTLET_NAME": "Toa Payoh Polyclinic (NHG)" 
      }, 
      "geometry": { 
       "X": 30854.1777, 
       "Y": 35203.2422 
      } 
     }, 
     { 
      "attribute": { 
       "OUTLET_NAME": "Woodlands Polyclinic (NHG)" 
      }, 
      "geometry": { 
       "X": 21546.4063, 
       "Y": 45844.5977 
      } 
     }, 
     { 
      "attribute": { 
       "OUTLET_NAME": "Yishun Polyclinic (NHG)" 
      }, 
      "geometry": { 
       "X": 28427.4941, 
       "Y": 45016.31 
      } 
     }, 
     { 
      "attribute": { 
       "OUTLET_NAME": "Pasir Ris Polyclinic (Singhealth)" 
      }, 
      "geometry": { 
       "X": 42028.0156, 
       "Y": 38950.3164 
      } 
     }, 
     { 
      "attribute": { 
       "OUTLET_NAME": "Queenstown Polyclinic (Singhealth)" 
      }, 
      "geometry": { 
       "X": 24412.3555, 
       "Y": 31231.8438 
      } 
     }, 
     { 
      "attribute": { 
       "OUTLET_NAME": "Sengkang Polyclinic (Singhealth)" 
      }, 
      "geometry": { 
       "X": 34765.73, 
       "Y": 41634.793 
      } 
     } 
    ] 
}, 
"field": { 
    "fi": [ 
     { 
      "alias": "OUTLET_Name", 
      "length": 200, 
      "name": "OUTLET_NAME", 
      "type": "esriFieldTypeString" 
     } 
    ] 
}, 
"geometryType": "esriGeometryPoint", 
"wkids": { 
    "wkid": 3414 
} 

}

我要实现的是下面的JSON格式:

{ 
"displayFieldName": "OUTLET_NAME", 
"fieldAliases": { 
    "OUTLET_NAME": "OUTLET_NAME" 
}, 
"geometryType": "esriGeometryPoint", 
"spatialReference": { 
    "wkid": 3414 
}, 
"fields": [ 
    { 
     "name": "OUTLET_NAME", 
     "type": "esriFieldTypeString", 
     "alias": "OUTLET_NAME", 
     "length": 200 
    } 
], 
"features": [ 
    { 
     "attributes": { 
      "OUTLET_NAME": "Alexandra Hospital" 
     }, 
     "geometry": { 
      "x": 24412.561499999836, 
      "y": 29892.22849999927 
     } 
    }, 
    { 
     "attributes": { 
      "OUTLET_NAME": "Changi General Hospital" 
     }, 
     "geometry": { 
      "x": 40924.62980000023, 
      "y": 35863.99689999968 
     } 
    }, 
    { 
     "attributes": { 
      "OUTLET_NAME": "National University Hospital" 
     }, 
     "geometry": { 
      "x": 22393.636400000192, 
      "y": 30731.8563000001 
     } 
    }, 
    { 
     "attributes": { 
      "OUTLET_NAME": "Singapore General Hospital" 
     }, 
     "geometry": { 
      "x": 28262.58440000005, 
      "y": 29180.98860000074 
     } 
    }, 
    { 
     "attributes": { 
      "OUTLET_NAME": "Tan Tock Seng Hospital" 
     }, 
     "geometry": { 
      "x": 29668.50810000021, 
      "y": 33693.00019999966 
     } 
    }, 
    { 
     "attributes": { 
      "OUTLET_NAME": "KK Women's and Children's Hospital" 
     }, 
     "geometry": { 
      "x": 29509.814699999988, 
      "y": 32540.03519999981 
     } 
    }, 
    { 
     "attributes": { 
      "OUTLET_NAME": "Adam Road Hospital" 
     }, 
     "geometry": { 
      "x": 25778.033800000325, 
      "y": 34343.84779999964 
     } 
    }, 
    { 
     "attributes": { 
      "OUTLET_NAME": "Mount Alvernia Hospital" 
     }, 
     "geometry": { 
      "x": 28502.294900000095, 
      "y": 35975.92449999973 
     } 
    }, 
    { 
     "attributes": { 
      "OUTLET_NAME": "Paragon Medical Centre" 
     }, 
     "geometry": { 
      "x": 28230.75270000007, 
      "y": 31911.52370000072 
     } 
    }, 
    { 
     "attributes": { 
      "OUTLET_NAME": "Raffles Hospital" 
     }, 
     "geometry": { 
      "x": 30665.577200000174, 
      "y": 31499.313200000674 
     } 
    }, 
    { 
     "attributes": { 
      "OUTLET_NAME": "Thomson Medical Centre" 
     }, 
     "geometry": { 
      "x": 28906.391900000162, 
      "y": 34174.550200000405 
     } 
    }, 
    { 
     "attributes": { 
      "OUTLET_NAME": "Mount Elizabeth Hospital" 
     }, 
     "geometry": { 
      "x": 28227.747800000012, 
      "y": 31941.378900000826 
     } 
    } 
] 
} 

这是我在我的WCF服务方法返回的JSON。

[OperationContract] 
[WebInvoke(Method = "GET", 
     ResponseFormat = WebMessageFormat.Json, 
     BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "json")] 
Container GetClinicInfo(); 



[DataContract] 
public class Container 
{ 
[DataMember] 
public string displayFieldName { get; set; } 
[DataMember] 
public FieldAliases alias { get; set; } 
[DataMember] 
public string geometryType { get; set; } 
[DataMember] 
public SpatialReference wkids { get; set; } 
[DataMember] 
public fieldContainer field { get; set; } 
[DataMember] 
public Features feature { get; set; } 


[DataContract] 
public class Container 
{ 
    [DataMember] 
    public string displayFieldName { get; set; } 
    [DataMember] 
    public FieldAliases alias { get; set; } 
    [DataMember] 
    public string geometryType { get; set; } 
    [DataMember] 
    public SpatialReference wkids { get; set; } 
    [DataMember] 
    public fieldContainer field { get; set; } 
    [DataMember] 
    public Features feature { get; set; } 

public Container(string display,FieldAliases aliases,string type,SpatialReference spatial,fieldContainer container, Features fea) 
{ 
    displayFieldName = display; 
    alias = aliases; 
    geometryType = type; 
    wkids = spatial; 
    field = container; 
    feature = fea; 
} 

现在,JSON按字母顺序解析“Container”

图片附:http://img600.imageshack.us/img600/2861/ehaehaehaeh.png

没有人有任何想法,我应该怎么办呢?

回答

1

可以使用[DataMember]属性的Order属性来定义,通过该场将被序列化的顺序:

[DataContract] 
public class Container 
{ 
    [DataMember(Order = 1)] 
    public string displayFieldName { get; set; } 
    [DataMember(Order = 2)] 
    public FieldAliases fieldAliases { get; set; } 
    [DataMember(Order = 3)] 
    public string geometryType { get; set; } 
    [DataMember(Order = 4)] 
    public SpatialReference spatialReference { get; set; } 
    [DataMember(Order = 5)] 
    public fieldContainer fields { get; set; } 
    [DataMember(Order = 6)] 
    public Features features { get; set; } 
}