我使用Newtonsoft.Json来解析ajax附带的json字符串。 这是我的ajax字符串:
{
"baslik" : "fff",
"sorular": [{
"soru1" : "1",
"soru2" : "2"
}]
}
这是我的转换尝试:
[WebMethod]
public static string SoruKaydet(string form_taslak)
{
var taslak = JsonConvert.DeserializeObject<KeyValuePair<string, KeyValuePair<string, string>>>(form_taslak);
}
它没有给出任何错误,但我将'taslak'改为'{[,[,]]}'..我该怎么办?
答案 0 :(得分:2)
您不能使用KeyValuePair<string, KeyValuePair<string, string>>
,因为第一行是KeyValuePair
字符串,第二行是KeyValuePair
字符串和对象数组,每一行包含一些KeyPairValue。
我建议使用以下结构来序列化json:
public class Sorular
{
public string soru1 { get; set; }
public string soru2 { get; set; }
}
public class RootObject
{
public string baslik { get; set; }
public List<Sorular> sorular { get; set; }
}
修改强>
如果您不知道Sorular对象中有多少对象,我的建议是使用动态对象来反序列化对象。像这样:
dynamic o = JsonConvert.DeserializeObject(myJson);
Console.WriteLine(o.sorular[0].soru2);
此代码段允许创建dynamic object
,然后在soru2
的第一个对象中显示List
。
或者,如果您不想使用动态而不是使用RootObject
反序列化使用此类:
public class SomeData
{
public string baslik { get; set; }
public IEnumerable<IDictionary<string, string>> sorular { get; set; }
}
答案 1 :(得分:1)
您应该为此创建合适的模型。像这样:
class MyModel{
string baslik{set;get}
List<Dictionary<string,string>> sorular{set;get;}
}
然后将其传递给方法:
[WebMethod]
public static string SoruKaydet(MyModel form_taslak)
{
//use form_taslak here
}
类似的东西。