2015-07-13 2 views
0

Я пытаюсь десериализовать Jsonstring для C# listObject. Данные поступают из JavaScript с:Как десериализовать Jsonstring в C# listObject

params = "data=" + JSON.stringify(queryResult.$$rows);  
XHR.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
XHR.setRequestHeader("Content-length", params.length);  
XHR.setRequestHeader("Connection", "close"); 
XHR.send(params); 

Тогда в asp.net попытаться десериализации Jsonstring с:

public class HomeController : Controller 
{ 
    [HttpPost] 
    public ActionResult doWork(string data) 
    { 
     var dump = JsonConvert.DeserializeObject<List<RootObject>>(data); 
     return new EmptyResult(); 
    } 
} 



public class RootObject 
{ 
    public string data { get; set; } 
    public string text { get; set; } 
} 

Если я смотрю в локальных данных variabel. Я нашел правильный jsong строку:

[ 
    [ 
     { 
     "data":"Australia", 
     "text":"Australia" 
     } 
    ], 
    [ 
     { 
     "data":"China", 
     "text":"China" 
     } 
    ], 
    [ 
     { 
     "data":"Hong Kong", 
     "text":"Hong Kong" 
     } 
    ], 
    [ 
     { 
     "data":"Indonesia", 
     "text":"Indonesia" 
     } 
    ], 
    [ 
     { 
     "data":"Netherlands", 
     "text":"Netherlands" 
     } 
    ] 
] 

Когда asp.net пытается выполнить JsonConvert.DeserializeObject> (данных); Виля возвращает сообщение об ошибке:

JsonSerializationException был необработанным пользователем кодом исключения типа «Newtonsoft.Json.JsonSerializationException» occred в newTonisoft.Json.ddl, но не был обработан в пользовательском коде

Дополнительная информация: Невозможно десериализовать текущий массив JSON (например, [1,2,3]) в тип 'maps.Controllers.RootObject', потому что для типа требуется объект JSON (например, {"name": "value"}) для десериализации правильно.

Как исправить это? и является ли это правильным способом javascript?

+1

'Список []' Ваш формат JSON –

+0

вы смотрели на другие ответы на StackOverflow ли? Как этот: http://stackoverflow.com/questions/17762032/cannot-deserialize-the-current-json-array-e-g-1-2-3-into-type –

ответ

1
string jsonTxt = @"[ 
[ 
    { 
     ""data"":""Australia"", 
     ""text"":""Australia"" 
    } 
], 
[ 
    { 
     ""data"":""China"", 
     ""text"":""China"" 
    } 
], 
[ 
    { 
     ""data"":""Hong Kong"", 
     ""text"":""Hong Kong"" 
    } 
], 
[ 
    { 
     ""data"":""Indonesia"", 
     ""text"":""Indonesia"" 
    } 
], 
[ 
    { 
     ""data"":""Netherlands"", 
     ""text"":""Netherlands"" 
    } 
] 
]"; 
var result = JsonConvert.DeserializeObject<List<RootObject>[]>(jsonTxt); 

В результате ваша потребность

Смежные вопросы