首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将`key`字段的名称修改为字典中key的值

如何将`key`字段的名称修改为字典中key的值
EN

Stack Overflow用户
提问于 2020-02-22 19:06:06
回答 2查看 323关注 0票数 0

我想将key字段的名称改为键的值,并将value字段的值替换为key字段的值。

这是我的班级

代码语言:javascript
运行
复制
public class SearchResponse 
{
    public Dictionary<string, int> Dictionary { get; set; }
}

响应是这样的:

代码语言:javascript
运行
复制
{
    "key":"aaaa",
    "value":123
}

但我希望得到这样的回应

代码语言:javascript
运行
复制
{
    "aaaa":123
}

有什么办法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-22 19:09:01

您可以将响应解析为JObject,然后使用现有令牌中的值添加新令牌并移除旧令牌

代码语言:javascript
运行
复制
var json = "{\"key\":\"aaaa\",\"value\":123}";
var jObject = JObject.Parse(json);
jObject[jObject["key"]?.ToString() ?? string.Empty] = jObject["value"];
jObject.Remove("key");
jObject.Remove("value");
Console.WriteLine(jObject);

输出将如下所示

代码语言:javascript
运行
复制
{
  "aaaa": 123
}

如果你有多个项目,你可以把上面的代码放到循环中。然后,可以使用ToObject<T>()方法将JObject转换为所需类型的字典

代码语言:javascript
运行
复制
var dict = jObject.ToObject<Dictionary<string, int>>();

另外,请记住,初始响应与Dictionary<string, int>类型不匹配,因为"key":"aaaa"有一个string值,而不是int

另一种更通用的方法是将json解析为Dictionary<string,string>,然后将每对值作为键和值添加到新的Dictionary<string, int>中。

代码语言:javascript
运行
复制
var json = "{\"key\":\"aaaa\",\"value\":123}";
var dict = JObject.Parse(json).ToObject<Dictionary<string, string>>();

var result = new Dictionary<string, int>();
for (int i = 0; i < dict.Count; i += 2)
{
    var first = dict.ElementAt(i);
    var second = dict.ElementAt(i + 1);

    result.Add(first.Value, int.TryParse(second.Value, out int parsedValue) ? parsedValue : 0);
}
票数 2
EN

Stack Overflow用户

发布于 2020-02-22 20:27:24

你可以拥有这样的东西:

代码语言:javascript
运行
复制
public Dictionary<string, string> ModelToDict<T>(T item)
    {
        Type myObjectType = item.GetType();
        Dictionary<string, string> dict = new Dictionary<string, string>();
        PropertyInfo[] properties = myObjectType.GetProperties();
        foreach (var info in properties)
        {
            string value = (string)info.GetValue(item);
            dict.Add(info.Name, value);//change the order if you like
        }
        return dict;
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60351541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档