我试图增量解析JSON,即基于条件。
以下是我的json消息,我目前正在使用JavaScriptSerializer反序列化消息。
string json = @"{"id":2, "method":"add", "params": {"object": {"name":"test" "id":"1"}, "position":"1"} }"; JavaScriptSerializer js = new JavaScriptSerializer(); Message m = js.Deserialize<Message>(json);
消息类如下所示:
public class Message { public string id { get; set; } public string method { get; set; } public Params @params { get; set; } public string position { get; set; } } public class Params { public string name { get; set; } public string id{ get; set; }
上面的代码可以毫无问题地解析消息。但它会立即解析整个JSON。我希望仅在“方法”参数的值为“添加”时才继续进行解析。如果不是“添加”,那么我不希望它继续解析消息的其余部分。有没有一种方法可以基于C#中的条件进行增量解析?(环境:带有.Net 3.5的VS 2008)
我必须承认,我对JavaScriptSerializer不太熟悉,但是如果您愿意使用JSON.net,它的功能就JsonReader很像DataReader。
JsonReader
DataReader
using(var jsonReader = new JsonTextReader(myTextReader)){ while(jsonReader.Read()){ //evaluate the current node and whether it's the name you want if(jsonReader.TokenType.PropertyName=="add"){ //do what you want } else { //break out of loop. } } }