2014-04-27 4 views
0

Буду признателен за помощь в сложной задаче, которую я должен выполнить.Проведите длинную строку с рисунком

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

{"place":"1","points":"1783","pseudo":"player1"}, 
{"place":"2","points":"1675","pseudo":"player34"}, 
{"place":"3","points":"1671","pseudo":"player45"}, 

Так что это одна строка с примерно в 3000 раз по той же схеме склеенных. (Есть 3000 игроков)

мне нужно, чтобы разобрать эту строку, чтобы заполнить простую структуру, как этот

public struct RankedPlayer 
{ 
    public string Pseudo; 
    public int Place; 
    public int Point; 
} 

Я не найти легкий способ сделать это. Я начинаю бороться с RegEx, но я не знаю, правильно ли это.

+1

Это JSON. Используйте [** Json.NET **] (http://james.newtonking.com/json), чтобы разобрать его – Fedor

+0

http://stackoverflow.com/questions/6620165/how-to-parse-json-in-c –

ответ

2

Похоже, вы имеете дело с простой строкой JSON. Использование JSON Парсон james.newtonking.com - json, и просто получить их в качестве объекта ...

Вот пример:

// Having this: 
public struct RankedPlayer 
{ 
    public string Pseudo; 
    public int Place; 
    public int Point; 
} 

// With this input 
{"place":"1","points":"1783","pseudo":"player1"}, 
{"place":"2","points":"1675","pseudo":"player34"}, 
{"place":"3","points":"1671","pseudo":"player45"}, 

// You should do something like: 
string input = // your input; 
var list_of_players = input.Split(','); 

foreach (var player in list_of_players) { 
    RankedPlayer r = JsonConvert.DeserializeObject<RankedPlayer>(player); 
    // Do something with it. 
} 

Так, просто используйте Player структуру.

Edit:

Вы можете использовать следующие для регулярных выражений: {.*?} соответствия. В основном совпадение между фигурными фигурными скобками неестественным образом (? после .*).

+0

Я думаю, что необходимо добавлять атрибуты в поля структуры из-за несоответствий имени. – Fedor

+0

Спасибо за ответ. Я не знал о строке JSON! Однако в строке есть запятые. Если я это сделаю: «var list_of_players = input.Split (',');", я не получу реальный список подстрок игрока. – flamandier

+0

@Fyodor Ему может потребоваться это, правда. Или он может сделать это вручную, если он предпочитает. – Noctis

0

Вы должны использовать JavaScriptSerializer попробовать:

JavaScriptSerializer serializer = new JavaScriptSerializer(); 
List<RankedPlayer> myData = serializer.Deserialize<List<RankedPlayer>>(strData); 
Смежные вопросы