我有一个使用jQuery向服务器发送ajax请求的页面。 ajax请求将POST
json字符串发送到服务器。
在服务器端,我需要能够将json字符串转换为c#对象。
有一次,我将json字符串转换为一个对象,我需要能够循环它并改变数据。
这是我的json字符串
{'123':{'name': 'VALUE','campaign_id': 'VALUE 2'} }
以下是我尝试将其转换为对象,然后通过它循环的方法。
try
{
string json = Request["data"];
dynamic records = JsonConvert.DeserializeObject(json);
string longname = "";
foreach (var record in records)
{
longname += record.name.ToString();
}
return longname;
} catch(Exception e)
{
return e.ToString();
}
但是这给了我这个错误
Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: ' Newtonsoft.Json.Linq.JProperty'不包含的定义 '名称' at myController的CallSite.Target(Closure,CallSite,Object)
如何解决此问题?
答案 0 :(得分:3)
从调试屏幕截图判断,尝试record.Value.name
获取您尝试阅读的值。
虽然JSON数据的属性名称为小写,但反序列化器使用Camel Casing作为生成的dynamic
实例中的属性名称,C#属性名称区分大小写。
答案 1 :(得分:0)
如果您要做的就是捕获即将进入C#类的json,并且json是静态的,您可以使用'粘贴JSON作为类'能力。
答案 2 :(得分:-3)
不太安全的方式,但在紧要关头工作: var myObject = eval('(' + myJSONtext +')');