代码之家  ›  专栏  ›  技术社区  ›  esac

如何处理C中的JSON?

  •  4
  • esac  · 技术社区  · 15 年前

    是否有一个简单/优雅的解析器来处理C中的JSON?将实际序列化/反序列化为C对象如何?

    5 回复  |  直到 11 年前
        1
  •  8
  •   Simon Fox    15 年前

    JSON.Net 是个不错的图书馆

        2
  •  4
  •   Justin R.    11 年前
    var jss = new JavaScriptSerializer();
    var data = jss.Deserialize<dynamic>(jsonString);
    

    别忘了参考“ System.Web.Extensions

        3
  •  2
  •   Brian    15 年前

    http://msdn.microsoft.com/en-us/library/system.runtime.serialization.json.datacontractjsonserializer.aspx

    基本上,您也可以将“数据契约”模型(通常用于WCF XML序列化)用于JSON。我发现,对于小任务来说,独立使用非常快速和容易。

    另请查看此示例:

    http://msdn.microsoft.com/en-us/library/bb943471.aspx

        4
  •  1
  •   tvanfosson    15 年前

    这里有 DataContractJsonSerializer 班级。

    反序列化:

    DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(MyObject));
    Stream s = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(json_string));
    MyObject obj = ser.ReadObject(s) as MyObject;
    

    Serialize:

    DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(MyObject));
    Stream s = new MemoryStream();
    MyObject obj = new MyObject { .. set properties .. };
    ser.WriteObject(s, obj);
    s.Seek( SeekOrigin.Begin );
    var reader = new StreamReader(s);
    string json_string = reader.ReadToEnd();
    
        5
  •  0
  •   alexdej    15 年前

    用于对对象进行序列化的DataContractJSonserializer。

    在Silverlight 3中,有system.json( http://msdn.microsoft.com/en-us/library/system.json(VS.95).aspx ),非常方便。