Разбор Json_encoded массива из PHP в C # UWP

Я разрабатываю приложение UWP с использованием C #, это веб-служба PHP, этот веб-сервис возвращает массив, закодированный с помощью функции json_encode, я не могу разобрать эту строку json в моем приложении UWP, помогите, пожалуйста

1: PHP-код

$aCli[]=  array("CAT"=>"OK","MSG"=>"SESION-OK","EXTRA"=>array("ID"=>"$spID","NOM"=>"$spNom"));
echo json_encode($aCli);

2: результат использования почтальона:

[{"CAT":"OK","MSG":"SESION-OK","EXTRA":{"ID":"3","NOM":"CHARLS"}}]

3. Результат с использованием Async Task из C #:

"[{\"CAT\":\"OK\",\"MSG\":\"SESION-OK\",\"EXTRA\":{\"ID\":\"3\",\"NOM\":\"CHARLS\"}}]"

4. Как десериализовать эту строку? Я пытаюсь использовать ее

using Windows.Data.Json;

5. Это код, используемый в это время

sJSON= await IniciarSesion();//this use async class to connect with webservice
JsonObject objJson = JsonObject.Parse(sJSON);//error is raised in this line
/*Json String is invalid*/
sCat = objJson["CAT"].GetString();
sMsg = objJson["MSG"].GetString();

1

Решение

Важный комментарий выше:

Ваш JSON — это представление массива, а не объекта.

ЕСЛИ ты можешь использовать Ньютонсофт (JSON.Net), вот в одну сторону, с зависимостью от JSON.Net, не Windows.Data.Json, Только тривиальная выборка, улучшайте по мере необходимости (нулевые проверки и т. Д.)

using System;
using Newtonsoft.Json.Linq;

public class Program
{
public static void Main()
{
var str = "[{\"CAT\":\"OK\",\"MSG\":\"SESION-OK\",\"EXTRA\":{\"ID\":\"3\",\"NOM\":\"CHARLS\"}}]";
var j = JArray.Parse(str);
var token = j[0];

//using dynamic to simplify sample, create/use your own type
var obj = token.ToObject<dynamic>();

Console.WriteLine(obj.CAT);
Console.WriteLine(obj.MSG);
Console.WriteLine(obj.EXTRA);
Console.WriteLine(obj.EXTRA.ID);
Console.WriteLine(obj.EXTRA.NOM);
}
}

Hth ..

0

Другие решения

Вы могли бы использовать Newtonsoft десериализовать строку JSON напрямую. Для вашего требования вам нужно сделать модель данных первой.

[{ «САТ»: «ОК», «MSG»: «Sesion-ОК», «ЭКСТРА»: { «ID»: «3», «NOM»: «Charls»}}]
public class Pet
{
public string Cat { get; set; }
public string Msg { get; set; }
public Extra Extra { get; set; }
}

public class Extra
{
public string Id { get; set; }
public string Nom { get; set; }
}

использование

private void Button_Click(object sender, RoutedEventArgs e)
{
var str = "[{\"CAT\":\"OK\",\"MSG\":\"SESION-OK\",\"EXTRA\":{\"ID\":\"3\",\"NOM\":\"CHARLS\"}}]";
var items = JsonConvert.DeserializeObject<List<Pet>>(str);
}

Для более вы могли бы сослаться Сериализация и десериализация JSON документация.

0

По вопросам рекламы [email protected]