Sar*_*nan 31 c# json json.net c#-4.0
我是JSON的新手.在我的asp.net应用程序中,我想解析json字符串.所以,我使用了Newtonsoft.Json包来读取和写入json数据.现在,我能够解析简单的json数据.但是现在我收到了一些复杂的json数据用于解析.所以,我有点打击它.
这是JSON数据:
{
quizlist: [
{
QUIZ: {
'QPROP': [
{
'name': 'FB',
'intro': '',
'timeopen': '1347871440',
'timeclose': '1355733840',
'timelimit': '0',
'noofques': '5',
'QUESTION': {
'QUEPROP': [
{
'questiontext': 'Scienceisbasedont',
'penalty': '0.3333333',
'qtype': 'shortanswer',
'answer': 'cause-and-effect',
'mark' : '5',
'hint': ''
},
{
'questiontext': 'otherscientistsevaluateit',
'penalty': '0.3333333',
'qtype': 'shortanswer',
'answer': 'Peerreview',
'mark' : '5',
'hint': ''
},
{
'questiontext': 'Watchingavariety',
'penalty': '0.3333333',
'qtype': 'shortanswer',
'answer': 'inductive',
'mark' : '5',
'hint': ''
},
{
'questiontext': 'coveriesorideas',
'penalty': '0.3333333',
'qtype': 'shortanswer',
'answer': 'paradigmshift',
'mark' : '5',
'hint': ''
},
{
'questiontext': 'proportions',
'penalty': '0.3333333',
'qtype': 'shortanswer',
'answer': 'fixed',
'mark' : '5',
'hint': ''
}
]
}
}
]
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
这是我的C#代码:
dynamic dynObj = JsonConvert.DeserializeObject(jsonString);
foreach (var data in dynObj.quizlist)
{
foreach (var data1 in data.QUIZ.QPROP)
{
Response.Write("Name" + ":" + data1.name + "<br>");
Response.Write("Intro" + ":" + data1.intro + "<br>");
Response.Write("Timeopen" + ":" + data1.timeopen + "<br>");
Response.Write("Timeclose" + ":" + data1.timeclose + "<br>");
Response.Write("Timelimit" + ":" + data1.timelimit + "<br>");
Response.Write("Noofques" + ":" + data1.noofques + "<br>");
}
}
Run Code Online (Sandbox Code Playgroud)
我能够在QPROP数组对象中解析直到noofques对象.现在必须解析data.QUIZ.QPROP.QUESTION.QUEPROP数组对象...
但是我没能完全解析......
请指导我摆脱这个问题......
L.B*_*L.B 17
foreach (var data in dynObj.quizlist)
{
foreach (var data1 in data.QUIZ.QPROP)
{
Response.Write("Name" + ":" + data1.name + "<br>");
Response.Write("Intro" + ":" + data1.intro + "<br>");
Response.Write("Timeopen" + ":" + data1.timeopen + "<br>");
Response.Write("Timeclose" + ":" + data1.timeclose + "<br>");
Response.Write("Timelimit" + ":" + data1.timelimit + "<br>");
Response.Write("Noofques" + ":" + data1.noofques + "<br>");
foreach (var queprop in data1.QUESTION.QUEPROP)
{
Response.Write("Questiontext" + ":" + queprop.questiontext + "<br>");
Response.Write("Mark" + ":" + queprop.mark + "<br>");
}
}
}
Run Code Online (Sandbox Code Playgroud)
Vla*_*lad 11
您可以使用此工具创建适当的c#类:
http://jsonclassgenerator.codeplex.com/
当你创建类时,你可以简单地将字符串转换为对象:
public static T ParseJsonObject<T>(string json) where T : class, new()
{
JObject jobject = JObject.Parse(json);
return JsonConvert.DeserializeObject<T>(jobject.ToString());
}
Run Code Online (Sandbox Code Playgroud)
这些类:http://ge.tt/2KGtbPT/v/0?c
只需修复名称空间.
问候
您可以创建自己的Quiz类型类,然后使用强类型反序列化:
例:
quizresult = JsonConvert.DeserializeObject<Quiz>(args.Message,
new JsonSerializerSettings
{
Error = delegate(object sender1, ErrorEventArgs args1)
{
errors.Add(args1.ErrorContext.Error.Message);
args1.ErrorContext.Handled = true;
}
});
Run Code Online (Sandbox Code Playgroud)
您还可以应用架构验证.
http://james.newtonking.com/projects/json/help/index.html
归档时间: |
|
查看次数: |
98137 次 |
最近记录: |