0

JSON.netで同等のことを行うにはどうすればよいですか?

 public SerializedResults SerializeResults(Type queryType, IEnumerable entities)
      {
          var results = SerializeDynamicType(queryType);

          var objList = AnonymousFns.DeconstructMany(entities, false, queryType).ToList();

          var ms = new MemoryStream();
          var type = objList.GetType();
          var serializer = new DataContractSerializer(type);

          using (ms)
          {
              using (GZipStream compress = new GZipStream(ms, CompressionMode.Compress, CompressionLevel.BestCompression))
              {
                  serializer.WriteObject(compress, objList);
              }
          }

          results.ByteArray = ms.ToArray();

          return results;
      }

特に次の行と混同しています: var serializer = new DataContractSerializer(type);

JSON.NETでそれをどのように行いますか??

ありがとう :-)

4

2 に答える 2

1

JSON.NET では、シリアル化するときに型は必要ありません。私はそれがあなたが渡しているタイプをそれ自体でうまくいくと仮定しています。

したがって、これを完全に取り除くことができます:

var type = objList.GetType();
var serializer = new DataContractSerializer(type);

そしてこれを変更します:

serializer.WriteObject(compress, objList);

に:

var json = JsonConvert.SerializeObject(objList);

JsonConvert の JSON.Netドキュメントは次のとおりです。

于 2013-04-23T22:17:17.040 に答える
0

BsonWriter を使用してストリームに書き込むことができると思います。以前とまったく同じバイナリ形式が得られるかどうかはわかりませんが、概念的には同じです。

  public SerializedResults SerializeResults(Type queryType, IEnumerable entities)
  {
      var results = SerializeDynamicType(queryType);

      var objList = AnonymousFns.DeconstructMany(entities, false, queryType).ToList();

      var ms = new MemoryStream();         

      using (ms)
      {
          using (GZipStream compress = new GZipStream(ms, CompressionMode.Compress, CompressionLevel.BestCompression))
          {
            using( BsonWriter writer = new BsonWriter(compress))
            {
              JsonSerializer serializer = new JsonSerializer();                 
              serializer.Serialize(writer, objList);
            }
          }
      }

      results.ByteArray = ms.ToArray();

      return results;
  }
于 2013-04-23T22:31:07.823 に答える