C# - Как декодировать массив json, не содержащий никаких присваиваний - PullRequest
1 голос
/ 25 мая 2020

Я получаю массив json, который мне нужно декодировать:

[143084,[8906.3,24.990013919999996,8906.8,32.58931742,-32.6,-0.0036,8907,7171.16062768,9075,8620]]

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

JsonConvert.DeserializeObject<object>(json);

, но здесь это не работает, потому что код json не имеет «назначений» из-за отсутствия лучшего слова. Это должно быть примерно так:

{
"channelId":"456456564",
"values":[ "8906.3,24.990013919999996,8906.8,32.58931742,-32.6,-0.0036,8907,7171.16062768,9075,8620" ]
} 

Я даже не уверен, что искать в Google, потому что я не знаю правильного слова для

"channelId":

Во всех примерах используются массивы json которые выглядят "нормально": / Простите за расплывчатый вопрос: /

Любая помощь будет принята с благодарностью! Спасибо!

Ответы [ 3 ]

0 голосов
/ 25 мая 2020

Спасибо Дэниелу А. Уайту!

В итоге я сделал следующее:

message = message.Replace("[", "");
message = message.Replace("]", "");
var array = message.Split(',');

Это дает мне одноуровневый массив, который я теперь могу преобразовать в нужный мне объект. Может быть, не красиво, но работает. Спасибо, Даниэль!

0 голосов
/ 25 мая 2020

У вас может быть такая функция

        var jsonArray = @"[143084,[8906.3, 24.990013919999996, 8906.8, 32.58931742, -32.6, -0.0036, 8907, 7171.16062768, 9075, 8620]]";
        var deserializedArray = JArray.Parse(jsonArray);
        var result = new MyObject
        {
            channelId = deserializedArray.First.ToString(),
            values = JsonConvert.SerializeObject(deserializedArray.Last)
        };

        return result;

, где MyObject выглядит так:

    public class MyObject
    {
        public string channelId { get; set; }
        public string values { get; set; }
    }

Результат:

{
  "channelId": "143084",

  "values": "[8906.3,24.990013919999996,8906.8,32.58931742,-32.6,-0.0036,8907,7171.16062768,9075,8620]"
}
0 голосов
/ 25 мая 2020

Я думаю, у вас есть два варианта

1) Создайте класс модели представления, который представляет этот

public class ViewModel
{
  public string channelId { get; set; }
  public string[] values { get; set; }
}

Я считаю, что значения в json равны массив строк с одним значением.

2) Используйте класс JObject, как в этом примере

https://www.newtonsoft.com/json/help/html/M_Newtonsoft_Json_Linq_JObject_Parse.htm

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...