Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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
Json 如何获取动态对象属性_Json_Asp.net Mvc - Fatal编程技术网

Json 如何获取动态对象属性

Json 如何获取动态对象属性,json,asp.net-mvc,Json,Asp.net Mvc,我从一个请求接收到一个Json对象,我想迭代它的属性并执行如下操作: 如果属性等于“EN”,则获取其值 我在web上看到的解决方案都与GetProperties/GetProperty方法相关,但我尝试了这两种方法,但都没有成功。 这应该是一些“简单”的东西,但我认为我在这里遗漏了一些东西 //Deserializing the object ExpandoObject deserializedContent = JsonConvert.DeserializeObject<ExpandoO

我从一个请求接收到一个Json对象,我想迭代它的属性并执行如下操作:

如果属性等于“EN”,则获取其值

我在web上看到的解决方案都与GetProperties/GetProperty方法相关,但我尝试了这两种方法,但都没有成功。 这应该是一些“简单”的东西,但我认为我在这里遗漏了一些东西

//Deserializing the object
ExpandoObject deserializedContent = JsonConvert.DeserializeObject<ExpandoObject>(obj.ToString(), new ExpandoObjectConverter());
dynamic deserializedDynamicContent = deserializedContent;

//Tries
var value = deserializedDynamicContent.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public);

var value = deserializedDynamicContent.GetType().GetProperty("ES").GetValue();
我做错了什么

{
"EN":[{"Id":1,"Name":"One"},{"Id":2,"Name":"Two"},{"Id":3,"Name":"Tree"}],
"ES":[{"Id":1,"Name":"Uno"},{"Id":2,"Name":"Dos"},{"Id":3,"Name":"Tres"}],
"PT":[{"Id":1,"Name":"Um"},{"Id":2,"Name":"Dois"},{"Id":3,"Name":"Três"}]
}

我不确定您到底想要实现什么,但由于实现了
IDictionary
,您应该能够做到以下几点:

var expando = JsonConvert.DeserializeObject<ExpandoObject>(yourJson);
var dict = (IDictionary<string, object>)expando;

// look for a particular key...
object value;
if (dict.TryGetValue("EN", out value))
{
    Console.WriteLine("Key exists!");
    var list = (List<dynamic>)value;
    Console.WriteLine(string.Join(",", list.Select(x => "{" + x.Id + "," + x.Name + "}")));
}

// or enumerate the entire dictionary...
foreach (var kvp in dict)
{
    var list = (List<dynamic>)kvp.Value;
    Console.WriteLine(
        kvp.Key + ":" + string.Join(",", list.Select(x => "{" + x.Id + "," + x.Name + "}")));
}
var expando=JsonConvert.DeserializeObject(yourJson);
var dict=(IDictionary)expando;
//寻找一个特殊的钥匙。。。
目标价值;
if(dict.TryGetValue(“EN”,输出值))
{
WriteLine(“密钥存在!”);
var list=(list)值;
Console.WriteLine(string.Join(“,”,list.Select(x=>“{”+x.Id+”,“+x.Name+”}”);
}
//或者列举整个字典。。。
foreach(dict中的var kvp)
{
var list=(list)kvp.Value;
控制台写入线(
kvp.Key+”:“+string.Join(“,”,list.Select(x=>”{“+x.Id+”,“+x.Name+”}”);
}

我不确定您到底想实现什么,但由于实现了
IDictionary
,您应该能够做到以下几点:

var expando = JsonConvert.DeserializeObject<ExpandoObject>(yourJson);
var dict = (IDictionary<string, object>)expando;

// look for a particular key...
object value;
if (dict.TryGetValue("EN", out value))
{
    Console.WriteLine("Key exists!");
    var list = (List<dynamic>)value;
    Console.WriteLine(string.Join(",", list.Select(x => "{" + x.Id + "," + x.Name + "}")));
}

// or enumerate the entire dictionary...
foreach (var kvp in dict)
{
    var list = (List<dynamic>)kvp.Value;
    Console.WriteLine(
        kvp.Key + ":" + string.Join(",", list.Select(x => "{" + x.Id + "," + x.Name + "}")));
}
var expando=JsonConvert.DeserializeObject(yourJson);
var dict=(IDictionary)expando;
//寻找一个特殊的钥匙。。。
目标价值;
if(dict.TryGetValue(“EN”,输出值))
{
WriteLine(“密钥存在!”);
var list=(list)值;
Console.WriteLine(string.Join(“,”,list.Select(x=>“{”+x.Id+”,“+x.Name+”}”);
}
//或者列举整个字典。。。
foreach(dict中的var kvp)
{
var list=(list)kvp.Value;
控制台写入线(
kvp.Key+”:“+string.Join(“,”,list.Select(x=>”{“+x.Id+”,“+x.Name+”}”);
}