小编典典

C#中的增量JSON解析

c#

我试图增量解析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)


阅读 358

收藏
2020-05-19

共1个答案

小编典典

我必须承认,我对JavaScriptSerializer不太熟悉,但是如果您愿意使用JSON.net,它的功能就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.
    }
  }
}
2020-05-19