2016-07-20 3 views
2

У меня есть следующая строка:Как разбить эту строку на словарь <string, string>?

{"key1":"value1","key2":"value2,some other part of value2"} 

я могу использовать следующий длинный синтаксис, чтобы разделить это:

var s = someString.Split(new[] {"\",\""}, StringSplitOptions.RemoveEmptyEntries); 
var firstEntryValue = s[0].Split(':')[1]; 
var secondEntryValue = s[1].Split(':')[1]; 

Поскольку эта строка в основном Dictionary<string,string>, как я могу вытащить все это в том, что введите в основном одну строку?

Я видел что-то вроде этого:

var s = someString.Split(new[] {"\",\""}, StringSplitOptions.RemoveEmptyEntries) 
    .Select(p => p.Split(':')) 
    .ToDictionary(split => split[0], split => split[1]); 

Но он бросает и индекс из ошибок границ. Есть ли какой-то подобный синтаксис, который будет работать?

ответ

6

Поскольку строка соответствует формату JSON, разделение его не является хорошим вариантом - именно из-за проблем, о которых вы упоминаете.

Вы можете использовать JsonConvert вместо:

var res = JsonConvert.DeserializeObject<Dictionary<string,string>>(inputString); 
+0

Да, собирался сказать то же самое. Это строка JSON, – Delosdos

+1

Возможно, стоит упомянуть, что ему понадобится пакет nuget JSON.NET для использования JsonConvert – rmc00

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