Как правильно разделить строковый массив с помощью C #

У меня есть простой сценарий 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 так что я могу сделать сравнение позже.

Спасибо за помощь заранее.

2

Решение

Используйте правильное Библиотека JSON-разбора лайк Newtonsoft.Json проанализировать строку JSON в статически типизированную модель класса:

string[] words = JsonConvert.DeserializeObject<string[]>(myString);
5

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

Вы просто пропускаете один шаг:

string[] words = myString.Trim(new []{'[',']'}).Split(',');

Честно говоря, если вы не собираетесь использовать JsonConvert для более сложных графов объектов использование десериализатора json в этой ситуации немного излишне, ИМХО.

РЕДАКТИРОВАТЬ: если вы не хотите кавычки, вы можете использовать проекцию LINQ …

string[] words = myString.Trim(new []{'[',']'})
.Split(',')
.Select(s => s.Trim(new[]{'"'}).ToArray();

Кстати, я хорошо знаком с Json.NET и был парнем из ServiceStack целую вечность. Но я склоняюсь к более простому решению, потому что, ну, Бритва Оккама, право?

2

Почему бы не сделать очевидную вещь и JSON-декодировать ваши входные данные JSON? Используя Newtonsoft.Json:

JsonConvert.DeserializeObject<string[]>(myString)

1

Если вы не хотите использовать библиотеку 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);
1

чтобы начать, измените его на слово [i], тогда я точно не знаю, что вы пытаетесь сделать.

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