Как я могу десериализовать JSON в простой словарь < string, string > в ASP.NET?

Oracle 11g и выше

. Что касается Oracle 11g, теперь вы можете использовать оператор PIVOT для достижения этого результата:

create table tq84_pivot (
  month number,
  value number
);

insert into tq84_pivot values(1, 100);
insert into tq84_pivot values(2, 200);
insert into tq84_pivot values(3, 300);
insert into tq84_pivot values(4, 400);
insert into tq84_pivot values(5, 500);
insert into tq84_pivot values(6, 600);
--
insert into tq84_pivot values(1, 400);
insert into tq84_pivot values(2, 350);
insert into tq84_pivot values(4, 150);

select 
  *
from
  tq84_pivot
pivot (
   sum (value) as sum_value for
     (month) in (1 as month_jan,
                 2 as month_feb,
                 3 as month_mar,
                 4 as month_apr,
                 5 as month_mai,
                 6 as month_jun,
                 7 as month_jul,
                 8 as month_aug,
                 9 as month_sep,
                10 as month_oct,
                11 as month_nov,
                12 as month_dec)
);

623
задан richardtallent 30 July 2009 в 18:24
поделиться

4 ответа

Json.NET делает это ...

string json = @"{""key1"":""value1"",""key2"":""value2""}";

var values = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);

Еще примеры: Сериализация коллекций с помощью Json.NET

842
ответ дан 22 November 2019 в 21:51
поделиться

Система. Текст. Json

, который Это может теперь быть сделано с помощью System.Text.Json , который встроен к .net core 3.0. Теперь возможно десериализовать JSON без пользующиеся сторонние библиотеки.

var json = @"{""key1"":""value1"",""key2"":""value2""}";
var values = JsonSerializer.Deserialize<Dictionary<string, string>>(json);

Также доступный в ню - получают пакет Система. Текст. Json при использовании.Net Standard или.Net Framework.

0
ответ дан 22 November 2019 в 21:51
поделиться

Изменить: Это работает, но принятый ответ с использованием Json.NET намного сложнее просто. Оставьте это на случай, если кому-то понадобится код только для BCL.

Он не поддерживается платформой .NET из коробки. Вопиющий недосмотр - не всем нужно десериализовать объекты с именованными свойствами. Так что я закончил свой собственный:

<Serializable()> Public Class StringStringDictionary
    Implements ISerializable
    Public dict As System.Collections.Generic.Dictionary(Of String, String)
    Public Sub New()
        dict = New System.Collections.Generic.Dictionary(Of String, String)
    End Sub
    Protected Sub New(info As SerializationInfo, _
          context As StreamingContext)
        dict = New System.Collections.Generic.Dictionary(Of String, String)
        For Each entry As SerializationEntry In info
            dict.Add(entry.Name, DirectCast(entry.Value, String))
        Next
    End Sub
    Public Sub GetObjectData(info As SerializationInfo, context As StreamingContext) Implements ISerializable.GetObjectData
        For Each key As String in dict.Keys
            info.AddValue(key, dict.Item(key))
        Next
    End Sub
End Class

Вызывается:

string MyJsonString = "{ \"key1\": \"value1\", \"key2\": \"value2\"}";
System.Runtime.Serialization.Json.DataContractJsonSerializer dcjs = new
  System.Runtime.Serialization.Json.DataContractJsonSerializer(
    typeof(StringStringDictionary));
System.IO.MemoryStream ms = new
  System.IO.MemoryStream(Encoding.UTF8.GetBytes(MyJsonString));
StringStringDictionary myfields = (StringStringDictionary)dcjs.ReadObject(ms);
Response.Write("Value of key2: " + myfields.dict["key2"]);

Извините за смесь C # и VB.NET…

5
ответ дан 22 November 2019 в 21:51
поделиться

Я обнаружил, что .NET имеет встроенный способ преобразования строки JSON в Dictionary через Тип System.Web.Script.Serialization.JavaScriptSerializer в сборке 3.5 System.Web.Extensions . Используйте метод DeserializeObject (String) .

Я наткнулся на это, когда делал ajax-сообщение (через jquery) с типом содержимого 'application / json' для статического метода страницы .net и увидел, что этот метод (который имел единственный параметр типа Object ) волшебным образом получил этот Словарь.

97
ответ дан 22 November 2019 в 21:51
поделиться
Другие вопросы по тегам:

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