2015-08-20 25 views
0

我想反序列化這個JSON,但這是複雜的JSON,我不能。其實我試圖在http://json2csharp.com/創建一個班級,但它沒有再次工作。你能幫我弄明白C#複雜的Json反序列化

{ 

    "?xml":{ 

    "@version":"1.0", 

    "@encoding":"utf-8" 

    }, 

    "ArrayOfPerson":{ 

    "@xmlns:xsd":"http://www.w3.org/2001/XMLSchema", 

    "@xmlns:xsi":"http://www.w3.org/2001/XMLSchema-instance", 

    "alert":[ 

    { 

    "@xmlns":"urn:url:taces:numarates", 

    "identifier":"489756", 

    "sender":"example.com", 

    "sent":"2015-08-19T23:44:00+00:00", 

    "status":"Actual", 

    "msgType":"wait", 

    "source":"Company", 

    "scope":"Public", 

    "info":{ 

    "category":"known", 

    "event":"event created", 

    "responseType":"Execute", 

    "urgency":"Expected", 

    "severity":"Severe", 

    "certainty":"Likely", 

    "effective":"2015-08-19T23:44:00+00:00", 

    "expires":"2015-08-20T00:29:00+00:00", 

    "senderName":"Company", 

    "headline":"headlineExample", 

    "description":" description string ", 

    "instruction":" instruction description.", 

    "contact":"mail adress", 

    "parameter":[ 

    { 
    "valueName":"city", 
    "value":"city time" 
    }, 

    { 
    "valueName":"severity", 
    "value":"High" 
    }, 

    { 
    "valueName":"POLYGON", 
    "value":"POLYGON ((25.8600349687548 -100.744518850353, 25.8335161877637 
    -100.664518850353, 25.8346209950992 -100.624518850353, 25.8442798845219 
    -100.61828081562, 25.8842798845219 -100.602879447141, 25.9242798845219 
    -100.604707951971, 25.941798102096 -100.624518850353, 25.9243730812152 
    -100.684518850353, 25.9242798845219 -100.684661516991, 25.9095974027013 
    -100.704518850353, 25.9042798845219 -100.710343745251, 25.8642798845219 
    -100.747917201708, 25.8600349687548 -100.744518850353))" 
    }, 

    { 
    "valueName":"direction", 
    "value":"2" 
    }, 

    { 
    "valueName":"speed", 
    "value":"27 km" 
    } 

    ], 

    "area":{ 
    "areaDesc":"Latitude: 25.885, Longitude: -100.664", 
    "polygon":"26.1256671949002 -100.814556141911, 25.5230724567197 
    -100.823124650158, 25.5734941016972 -100.397349654998, 26.1574195901602 
    -100.546429706446, 26.1256671949002 -100.814556141911" 
    } 

    } 

    } 

    ... array items 

    ] 
    } 
    } 
+0

你從XML轉換呢?直接反序列化XML會更容易嗎? – dbc

+0

我試過,但我不知道如何解析它爲XML,所以我已經改變爲JSON和解析 –

回答

0

看來你的問題,是因爲你的JSON屬性名稱不能作爲C#變量「原樣」因此json2charp返回「無效的名稱__ @版本」

幾乎所有包括DataContractJsonSerializers和Json.Net的Json desializer都可以支持自定義數據庫名稱。它不需要與班級中的屬性名稱相同。請參閱DataMember attribute on MSDN

或者您可以使用Json.Net庫和JsonReader通過名字來手動解決性能http://insidethecpu.com/2013/06/19/json-parsing/