C#中的增量JSON解析

如何解决C#中的增量JSON解析?

开发过程中遇到C#中的增量JSON解析的问题如何解决?下面主要结合日常开发的经验,给出你关于C#中的增量JSON解析的解决方法建议,希望对你解决C#中的增量JSON解析有所启发或帮助;

问题描述

我必须承认,我对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.
    }
  }
}

解决方法

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

喜欢与人分享编程技术与工作经验,欢迎加入编程之家官方交流群!

猜你在找的编程问答相关文章

怎样才能让 Git“忘记”一个被跟踪但现在在 .gitignore 中的文件?
Python 中的metaclasses是什么?
如何在 Linux 上查找包含特定文本的所有文件?
如何从异步调用返回响应
如何在一个表达式中合并两个字典(取字典的并集)?
HTTP 中的 POST 和 PUT 有什么区别?
使用 Git 将最近的提交移动到新分支
在 JavaScript 比较中应该使用哪个等于运算符 (== vs ===)?
微信公众号搜索 “ 程序精选 ” ,选择关注!
微信公众号搜 "程序精选"关注