Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从JSON属性中删除,但保留其值_C#_Javascript_Json_String_Properties - Fatal编程技术网

C# 从JSON属性中删除,但保留其值

C# 从JSON属性中删除,但保留其值,c#,javascript,json,string,properties,C#,Javascript,Json,String,Properties,我有: [ { "Position": "ProjectManager", "Salary": 2000 }, { "Position": "BusinessAnalyst", "Salary": 2001 }, { "Position": "TechnicalLead", "Salary": 2002 }, { "Position": "SeniorSoftwareEngineer", "Salary"

我有:

[
  {
    "Position": "ProjectManager",
    "Salary": 2000
  },
  {
    "Position": "BusinessAnalyst",
    "Salary": 2001
  },
  {
    "Position": "TechnicalLead",
    "Salary": 2002
  },
  {
    "Position": "SeniorSoftwareEngineer",
    "Salary": 2003
  },
  {
    "Position": "SoftwareEngineer",
    "Salary": 2004
  },
  {
    "Position": "JuniorSoftwareEngineer",
    "Salary": 2005
  },
  {
    "Position": "UIUXEngineer",
    "Salary": 2006
  },
  {
    "Position": "QALead",
    "Salary": 2007
  },
  {
    "Position": "SeniorQAEngineer",
    "Salary": 2008
  },
  {
    "Position": "QAEngineer",
    "Salary": 2009
  },
  {
    "Position": "JuniorQAEngineer",
    "Salary": 2010
  },
  {
    "Position": "SeniorAutomationEngineer",
    "Salary": 2011
  },
  {
    "Position": "AutomationEngineer",
    "Salary": 2012
  },
  {
    "Position": "JuniorAutomationEngineer",
    "Salary": 2013
  }
]
但我需要将其转换为以下示例:

{
  "ProjectManager": "2000",
    "BusinessAnalyst": "2001",
    "TechnicalLead": "2002",
    "SeniorSoftwareEngineer": "2003",
    "SoftwareEngineer": "2004",
    "JuniorSoftwareEngineer": "2005",
    "UIUXEngineer": "2006",
    "QALead": "2007",
    "SeniorQAEngineer": "2008",
    "QAEngineer": "2009",
    "JuniorQAEngineer": "2010",
    "SeniorAutomationEngineer": "2011",
    "AutomationEngineer": "2012",
    "JuniorAutomationEngineer": "2013"
}

正如您在第二个示例中看到的,我只有值,没有属性。我该怎么做?(目前我的想法是将Json解析为字符串,并删除与“Position:”或“Salary:”匹配的所有标记)

一种方法是迭代数组中的每个对象并填充字典:

// Using JSON.NET you can deserialize the JSON array as an enumerable 
// of dynamically-typed objects (i.e. your array)
IEnumerable<dynamic> employees = JsonConvert
                                   .DeserializeObject<IEnumerable<dynamic>>
                                   (
                                       jsonText
                                   );

Dictionary<string, object> values = new Dictionary<string, object>();

foreach(dynamic employee in employees) 
{
    values.Add((string)employee.Position, (object)employee.Salary);
}

// .NET dictionaries are deserialized into JSON objects!
string convertedJson = JsonConvert.SerializeObject(values);
//使用JSON.NET可以将JSON数组反序列化为可枚举数组
//动态类型化对象(即数组)的数量
IEnumerable employees=JsonConvert
.反序列化对象
(
jsonText
);
字典值=新字典();
foreach(员工中的动态员工)
{
添加((字符串)employee.Position,(对象)employee.Salary);
}
//.NET字典被反序列化为JSON对象!
string convertedJson=JsonConvert.SerializeObject(值);

更新 如果您想要基于单行LINQ扩展方法的解决方案,那么:

string convertedJson = JsonConvert.SerializeObject
(
    JsonConvert.DeserializeObject<IEnumerable<dynamic>>(jsonText)
        .ToDictionary(employee => employee.Position, employee => employee.Salary)
);
string convertedJson=JsonConvert.SerializeObject
(
JsonConvert.DeserializeObject(jsonText)
.ToDictionary(employee=>employee.Position,employee=>employee.Salary)
);

你不需要做那么多事情。 我能想出一个办法

让您的json为probjson,结果为resJSON

var arr=new [];
var res=new { arr }
    for(var i in probjson.length){

var position=probjson[i].Position;
var salary=probjson[i].Salary;

var v = new { position=salary  }
res.arr.add(V);

}
这不是一个完整的

请试着想出一个主意。
谢谢

@user3770925没问题。查看我的更新,您可能可以进一步简化解决方案!;)