У меня есть простой сценарий php, который выводит массив строк с использованием метода json_encode на серверной части. это выводит это так:
["8090123","8090456","8090789","8090321","8090654"]
Теперь я хочу разобрать его в своем коде C #, но я не могу разобрать его правильно.
Ниже мой код C #:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
using (WebClient wc = new WebClient())
{
string myString = wc.DownloadString("https://magforex.biz/list.php");
string[] words = myString.Split(',');
for (var i = 0; i < words.Length; i++)
{
// i just hardcoded the index for now
Console.WriteLine(words[0]);
break;
}
Console.ReadLine();
}
}
}
}
Код работает просто отлично, но выдает следующий результат ["8090123"
что не то, что я хотел.
Извините, поскольку я только начинаю с C # и знаю об этом немного.
Все, что я хочу, это просто строка 8090123
так что я могу сделать сравнение позже.
Спасибо за помощь заранее.
Используйте правильное Библиотека JSON-разбора лайк Newtonsoft.Json проанализировать строку JSON в статически типизированную модель класса:
string[] words = JsonConvert.DeserializeObject<string[]>(myString);
Вы просто пропускаете один шаг:
string[] words = myString.Trim(new []{'[',']'}).Split(',');
Честно говоря, если вы не собираетесь использовать JsonConvert
для более сложных графов объектов использование десериализатора json в этой ситуации немного излишне, ИМХО.
РЕДАКТИРОВАТЬ: если вы не хотите кавычки, вы можете использовать проекцию LINQ …
string[] words = myString.Trim(new []{'[',']'})
.Split(',')
.Select(s => s.Trim(new[]{'"'}).ToArray();
Кстати, я хорошо знаком с Json.NET и был парнем из ServiceStack целую вечность. Но я склоняюсь к более простому решению, потому что, ну, Бритва Оккама, право?
Почему бы не сделать очевидную вещь и JSON-декодировать ваши входные данные JSON? Используя Newtonsoft.Json:
JsonConvert.DeserializeObject<string[]>(myString)
Если вы не хотите использовать библиотеку Newtonsoft, вы можете использовать JavaScriptSerializer
преобразовать вашу строку в массив. добавлять using System.Web.Script.Serialization;
а потом:
string myString = wc.DownloadString("https://magforex.biz/list.php");
JavaScriptSerializer js = new JavaScriptSerializer();
string[] myArray = js.Deserialize<string[]>(myString);
чтобы начать, измените его на слово [i], тогда я точно не знаю, что вы пытаетесь сделать.