Как разбирать строку JSON с массивом, имеющим имя переменной в C #? [Дубликат]

1.Concatenate строка (пробел между каждой строкой)

Фрагмент кода:

<?php
 $txt1 = "Sachin";
 $txt2 = "Tendulkar";

 $result = $txt1.$txt2 ;
 echo  $result. "\n";
 ?>  

Выход: SachinTendulkar

2.Concatenate строка, где существует пространство

Фрагмент кода:

<?php
 $txt1 = "Sachin";
 $txt2 = "Tendulkar";

 $result = $txt1." ".$txt2; 
 echo  $result. "\n";
?>  

Выход: Sachin Tendulkar

  1. Объединить строку, используя функцию printf.

Фрагмент кода:

  <?php
 $data1 = "Sachin";
 $data2 = "Tendulkar";
 printf("%s%s\n",$data1, $data2);
 printf("%s %s\n",$data1, $data2); 
?>

Выход: SachinTendulkar Sachin Tendulkar

7
задан John Saunders 22 November 2012 в 19:55
поделиться

3 ответа

Серьезно, не нужно идти по динамическому маршруту; используйте

var deser = new JavaScriptSerializer()
    .Deserialize<Dictionary<string, Dictionary<string, int>>>(val);
var justDaily = deser["daily"];

, чтобы получить словарь, а затем вы можете, например,

foreach (string key in justDaily.Keys)
    Console.WriteLine(key + ": " + justDaily[key]);

, чтобы получить присутствующие клавиши и соответствующие значения.

19
ответ дан Rawling 21 August 2018 в 15:18
поделиться
  • 1
    Работал как абсолютное обаяние :) Спасибо! Это было похоже на самый логичный путь из всех ответов, которые я получил. – Jason Higgins 23 November 2012 в 03:27
  • 2
    PS. Вы забыли 3-й правый & gt; скобка в словаре Словарь! – Jason Higgins 23 November 2012 в 03:50
  • 3
    @JasonHiggins Спасибо за это. – Rawling 23 November 2012 в 09:59

Это не удобно использовать, потому что в с # нельзя определить переменную, начинающуюся с числа. Добавьте префикс к клавишам.

Или попробуйте:

string json = "
{ daily:[
  { key: '1337990400000', val:443447 },
  { key: '1338076800000', val:444693 },
  { key: '1338163200000', val:452282 },
  { key: '1338249600000', val:462189 },
  { key: '1338336000000', val:466626 }]
}";

public class itemClass
{
  public string key; // or int
  public int val;
}

public class items
{
  public itemClass[] daily;
}

items daily = (new JavascriptSerializer()).Deserialize<items>(json);

Затем вы можете:

var itemValue = items.Where(x=>x.key=='1338163200000').Select(x=>x.val).FirstOrDefault();
0
ответ дан Boris Gappov 21 August 2018 в 15:18
поделиться

Вы можете использовать dynamic в .NET 4 или более поздней версии. Например, с помощью JSON.NET я могу сделать:

dynamic obj = JsonConvert.Deserialize<dynamic>("{x: 'hello'}");

Затем вы можете:

var str = obj.x;

Однако не знаете, как он будет обрабатывать цифровые клавиши. Вы можете, конечно, просто использовать JObject непосредственно, например:

var obj = JObject.Parse("{'123456': 'help'}");
var str = obj["123456"];
3
ответ дан Lloyd 21 August 2018 в 15:18
поделиться
  • 1
    Если он не знает, какие ключи будут, можете ли вы получить «все ключи», сборник из динамического? – Rawling 22 November 2012 в 20:12
  • 2
    Возможно, использование отражения да (не будет красивым). Я предпочитаю использовать JObject, поскольку он в основном сжимает словаря. – Lloyd 23 November 2012 в 00:54
Другие вопросы по тегам:

Похожие вопросы: