2014-12-02 4 views
0

Как я могу десериализовать эту простую строку JSON в списке на C#?JSON array to C# List

["on4ThnU7","n71YZYVKD","CVfSpM2W","10kQotV"] 

таким образом, что

List<string> myStrings = [the content of the JSON above] 

Я использую DataContractJsonSerializer нашел в System.Runtime.Serialization.Json, и не нуждаются во внешней библиотеке.

EDIT: JavaScriptSerializer, найденный в System.Web.Script.Сериализация также приемлема.

+0

проверить http://stackoverflow.com/questions/13506542/deserializing-json-using-system-runtime-serialization-json – tophallen

+0

Я видел это уже. Структура данных JSON действительно отличается. – nikk

ответ

2

Просто сделать это,

string json = "[\"on4ThnU7\",\"n71YZYVKD\",\"CVfSpM2W\",\"10kQotV\"]"; 
    var result = new JavaScriptSerializer().Deserialize<List<String>>(json); 
+0

Почему у этого есть "\" хотя? в отличие от поста выше – nikk

+1

Вот как вы форматируете json, иначе компилятор woll показывает ошибку! – Sajeetharan

+0

получил! что json предоставляется явно в коде. извлеченные уроки. – nikk

1

Вы можете преобразовать строки данных в bytes[], завернуть его в MemoryStream и использовать DataContractJsonSerializer для десериализации:

string stringData = "[\"on4ThnU7\", \"n71YZYVKD\", \"CVfSpM2W\", \"10kQotV\"]"; 
string[] arrayData; 
using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(stringData))) 
{ 
    var deserializer = new DataContractJsonSerializer(typeof(string[])); 
    arrayData = deserializer.ReadObject(ms) as string[]; 
} 
if (arrayData == null) 
    Console.WriteLine("Wrong data"); 
else 
{ 
    foreach (var item in arrayData) 
     Console.WriteLine(item); 
} 
1

Вы можете использовать Json.NET, убедитесь, что вы импортируете Newtonsoft.Json пространство имен

using Newtonsoft.Json; 

и десериализации JSON, как показано ниже

string json = @"[""on4ThnU7"",""n71YZYVKD"",""CVfSpM2W"",""10kQotV""]"; 
List<string> myStrings = JsonConvert.DeserializeObject<List<string>>(json); 
foreach (string str in myStrings) 
{ 
    Console.WriteLine(str); 
} 

Выход

on4ThnU7 
n71YZYVKD 
CVfSpM2W 
10kQotV 

Работа демо: https://dotnetfiddle.net/4OLS2v

+0

спасибо, ekad! Как и мой ответ выше. Я ценю это много. Надеюсь, ты снова будешь там в следующий раз! :) – nikk

+0

где JsonConvert хотя? не видел этого в этом пространстве имен. – nikk

+0

так вот что я говорил: я не хотел использовать какие-либо из этих внешних библиотек. не хотят иметь дело с зависимостями при развертывании приложения. это ДОЛЖНО быть пространством имен 'System.something'. – nikk

0

Ok, я получил его.

using System.Web.Script.Serialization;

public List<string> MyJsonDeserializer(string filename) 
{ 
    //get json data 
    Stream fs = new FileStream(filename, FileMode.Open); 
    string jsonData = new StreamReader(fs).ReadToEnd(); 
    fs.Close(); 

    //deserialize json data to c# list 
    JavaScriptSerializer serializer = new JavaScriptSerializer(); 
    return (List<string>)serializer.Deserialize(jsonData, typeof(List<string>));   
}  
+2

Какая разница с ответом, который я написал выше? – Sajeetharan

0

JavaScriptSerializer сериализатору = новый JavaScriptSerializer(); Список stringList = serializer.Deserialize> (inpustJson);