Json parse для нуба

MikeS

Новичок
Регистрация
26.04.2016
Сообщения
6
Благодарностей
1
Баллы
3
Здравствуйте. Знаю, что обсуждалась тема не раз, но сделать рабочего кода у меня не получилось.
Необходимо разложить одномерный массив json в переменные по названию ключей.

Пример получаемого jsona
Код:
{"fname":"Имя","sname":"Фамилия","email":"[email protected]"}
Теперь мне нужно получить отсюда переменные
{-Variable.fname-}=Имя
{-Variable.sname-}=Фамилия
и т.д.
То есть универсальное {-Variable.$key-}=$value

Делаю следующие шаги:
1. GET запрос на url, получаю там код json и сохраняю переменную json_str
2. Магия
3. Вызываю нужные мне {-Variable.$key-} дальше по ходу сценария

Подскажите пункт 2, как записать данные json в переменные.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Здравствуйте. Знаю, что обсуждалась тема не раз, но сделать рабочего кода у меня не получилось.
Необходимо разложить одномерный массив json в переменные по названию ключей.

Пример получаемого jsona
Код:
{"fname":"Имя","sname":"Фамилия","email":"[email protected]"}
Теперь мне нужно получить отсюда переменные
{-Variable.fname-}=Имя
{-Variable.sname-}=Фамилия
и т.д.
То есть универсальное {-Variable.$key-}=$value

Делаю следующие шаги:
1. GET запрос на url, получаю там код json и сохраняю переменную json_str
2. Магия
3. Вызываю нужные мне {-Variable.$key-} дальше по ходу сценария

Подскажите пункт 2, как записать данные json в переменные.
распарсить регуляркой. или искать и подключать какие-то библиотеки для работы с json
 

MikeS

Новичок
Регистрация
26.04.2016
Сообщения
6
Благодарностей
1
Баллы
3
Спасибо, я прошу конкретный пример рабочий.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
(?<="fname":")[^"]+
должна парсить имя
 

MikeS

Новичок
Регистрация
26.04.2016
Сообщения
6
Благодарностей
1
Баллы
3
Я думаю спецы в C# смогут дать универсальный код, не привязанный к конкретным названиям полей, а использующий конструкцию {-Variable.$key-}=$value
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Я думаю спецы в C# смогут дать универсальный код, не привязанный к конкретным названиям полей, а использующий конструкцию {-Variable.$key-}=$value
Само собой смогут. Сначала смогут написать, потом смогут дать. Почему бы и не сделать, если можешь)
 

Radzhab

Client
Регистрация
23.05.2014
Сообщения
1 500
Благодарностей
1 268
Баллы
113
Спецы c# уже здесь



C#:
DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(RootObject));
string fileContent = project.Variables["json"].Value;
RootObject person = (RootObject)json.ReadObject(new System.IO.MemoryStream(Encoding.UTF8.GetBytes(fileContent)));
var fname = person.fname;
var sname = person.sname;
var email =  person.email;
 

Вложения

  • Спасибо
Реакции: Oleg_M, Konrod_m и tatarin

MikeS

Новичок
Регистрация
26.04.2016
Сообщения
6
Благодарностей
1
Баллы
3
Вау :-)
Но опять вопрос, бязаельно ли указывать названия ключей или можно брать название переменной из названия ключа?
Просто в моём случае набор полей меняется, хотелось бы не зависеть от привязки к списку полей.
 
Регистрация
23.12.2014
Сообщения
127
Благодарностей
65
Баллы
28
Сделал чуть по другому с помощью Newtonsoft json

Код:
var js = project.Variables["getResult"].Value;
var n = Newtonsoft.Json.Linq.JObject.Parse(js);

project.Variables["uid"].Value = n["client"]["uid"].ToString();//
project.Variables["token"].Value = n["client"]["token"].ToString();//
 
  • Спасибо
Реакции: Oleg_M и stanar
Регистрация
23.12.2014
Сообщения
127
Благодарностей
65
Баллы
28
Вау :-)
Но опять вопрос, бязаельно ли указывать названия ключей или можно брать название переменной из названия ключа?
Просто в моём случае набор полей меняется, хотелось бы не зависеть от привязки к списку полей.
Немного не понял идеи.

Что означает набор полей меняется?
Получается, что сервер каждый раз отдает данные в разной компоновке ключа(k) и значения(v) внутри ответа?
то есть ответ может иметь вид

{k1:v1}
или
{k:{k1:v1}}
или
{k:[k1:v1]}

?

"бязаельно ли указывать названия ключей
"
ну если имя ключа одно и то же, то можно же так и оставить?

"или можно брать название переменной из названия ключа? "
То есть вначале из ответа спарсить ключи, а потом уже найдя нужный ключ по имени - парсить его?

В вышеуказанном примере кода можно название ключа менять своим.
 
Регистрация
23.12.2014
Сообщения
127
Благодарностей
65
Баллы
28
  • Спасибо
Реакции: emel

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)