【问题标题】:Convert JSON array of objects with specified properties to Dictionary将具有指定属性的对象的 JSON 数组转换为 Dictionary
【发布时间】:2016-12-28 00:24:22
【问题描述】:

我需要将具有键“id”和值“score”属性的对象转换为字典 JSON 数组,如下所示

[{"score":0.6990418,"id":"4833909335"},
{"score":0.8079009,"id":"4833874639"},
{"score":0.8079009,"id":"4834247506"}].

字典键应该有“id”属性的值,字典值应该从“score”复制。

请注意,它不是反序列化,而是在某些信息未复制到目标对象时进行转换/映射(例如属性名称和可能的其他属性)

我发现了类似的问题 How to deserialize the json array of objects to dictionary ,它被错误地关闭为关于反序列化具有多个属性的不同 JSON 对象的不同问题的重复。 我尝试重新打开它,但没有成功。

【问题讨论】:

    标签: c# arrays json dictionary


    【解决方案1】:

    我创建了扩展方法以允许从 JSON 数组的元素中提取属性对

      public static Dictionary< string, string> JsonArrayToDictionary( string strJson, string keyName,string valueName)
            {
                var array = JArray.Parse(strJson) ;
                var dictionary = JsonArrayToDictionary(array, keyName, valueName);
                return dictionary;
            }
    
            public static Dictionary<string , string > JsonArrayToDictionary(this JArray array, string keyName, string valueName)
            {
                if (array != null)
                {
                    var dict = array.ToDictionary(x => x[keyName].ToString(), x => x[valueName].ToString());
                    return dict;
                }
                return null;
            }
    
    
     [TestClass()]
        public class JsonHelperExtensionsTests
        {
            [ TestMethod()]
            public void JsonArrayToDictionaryTest()
            {
                var jsonArray= @"[{""score "":0.6990418,"" id"": ""ID1"" },{""score "":0.8079009,"" id"": ""ID2"" }]";
               var dict= JsonHelperExtensions.JsonArrayToDictionary(jsonArray, "id" , "score");
                dict.Count.Should().Be(2);
                dict[ "ID1"].Should().Be("0.6990418" );
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-10
      • 1970-01-01
      • 1970-01-01
      • 2022-11-01
      • 2021-10-24
      • 2018-03-04
      • 1970-01-01
      • 2021-07-11
      相关资源
      最近更新 更多