Beispiel #1
0
    public Store()
    {
      Mottos.Add("Hello World");
      Mottos.Add("öäüÖÄÜ\\'{new Date(12345);}[222]_µ@²³~");
      Mottos.Add(null);
      Mottos.Add(" ");

      Product rocket = new Product();
      rocket.Name = "Rocket";
      rocket.ExpiryDate = new DateTime(2000, 2, 2, 23, 1, 30, DateTimeKind.Utc);
      Product alien = new Product();
      alien.Name = "Alien";

      product.Add(rocket);
      product.Add(alien);
    }
    public void MissingMemberDeserializeOkay()
    {
      Product product = new Product();

      product.Name = "Apple";
      product.ExpiryDate = new DateTime(2008, 12, 28);
      product.Price = 3.99M;
      product.Sizes = new string[] { "Small", "Medium", "Large" };

      string output = JsonConvert.SerializeObject(product);
      //{
      //  "Name": "Apple",
      //  "ExpiryDate": new Date(1230422400000),
      //  "Price": 3.99,
      //  "Sizes": [
      //    "Small",
      //    "Medium",
      //    "Large"
      //  ]
      //}

      JsonSerializer jsonSerializer = new JsonSerializer();
      jsonSerializer.MissingMemberHandling = MissingMemberHandling.Ignore;

      object deserializedValue;

      using (JsonReader jsonReader = new JsonTextReader(new StringReader(output)))
      {
        deserializedValue = jsonSerializer.Deserialize(jsonReader, typeof(ProductShort));
      }

      ProductShort deserializedProductShort = (ProductShort)deserializedValue;

      Assert.AreEqual("Apple", deserializedProductShort.Name);
      Assert.AreEqual(new DateTime(2008, 12, 28), deserializedProductShort.ExpiryDate);
      Assert.AreEqual("Small", deserializedProductShort.Sizes[0]);
      Assert.AreEqual("Medium", deserializedProductShort.Sizes[1]);
      Assert.AreEqual("Large", deserializedProductShort.Sizes[2]);
    }
    public void MissingMemberDeserialize()
    {
      Product product = new Product();

      product.Name = "Apple";
      product.ExpiryDate = new DateTime(2008, 12, 28);
      product.Price = 3.99M;
      product.Sizes = new string[] { "Small", "Medium", "Large" };

      string output = JsonConvert.SerializeObject(product, Formatting.Indented);
      //{
      //  "Name": "Apple",
      //  "ExpiryDate": new Date(1230422400000),
      //  "Price": 3.99,
      //  "Sizes": [
      //    "Small",
      //    "Medium",
      //    "Large"
      //  ]
      //}

      ProductShort deserializedProductShort = (ProductShort)JsonConvert.DeserializeObject(output, typeof(ProductShort), new JsonSerializerSettings { MissingMemberHandling = MissingMemberHandling.Error });
    }
    public void SingleItemArrayPropertySerialization()
    {
      Product product = new Product();

      product.Name = "Apple";
      product.ExpiryDate = new DateTime(2008, 12, 28, 0, 0, 0, DateTimeKind.Utc);
      product.Price = 3.99M;
      product.Sizes = new string[] { "Small" };

      string output = JsonConvert.SerializeObject(product, new IsoDateTimeConverter());

      XmlDocument xmlProduct = JsonConvert.DeserializeXmlNode(output, "product", true);

      Assert.AreEqual(@"<product>
  <Name>Apple</Name>
  <ExpiryDate>2008-12-28T00:00:00Z</ExpiryDate>
  <Price>3.99</Price>
  <Sizes json:Array=""true"" xmlns:json=""http://james.newtonking.com/projects/json"">Small</Sizes>
</product>", IndentXml(xmlProduct.InnerXml));

      string output2 = JsonConvert.SerializeXmlNode(xmlProduct.DocumentElement, Formatting.Indented);

      Assert.AreEqual(@"{
  ""product"": {
    ""Name"": ""Apple"",
    ""ExpiryDate"": ""2008-12-28T00:00:00Z"",
    ""Price"": ""3.99"",
    ""Sizes"": [
      ""Small""
    ]
  }
}", output2);
    }
    public void BlogPostExample()
    {
      Product product = new Product
                          {
                            ExpiryDate = new DateTime(2010, 12, 20, 18, 1, 0, DateTimeKind.Utc),
                            Name = "Widget",
                            Price = 9.99m,
                            Sizes = new[] {"Small", "Medium", "Large"}
                          };

      string json = 
        JsonConvert.SerializeObject(
          product,
          Formatting.Indented,
          new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() }
        );

      //{
      //  "name": "Widget",
      //  "expiryDate": "\/Date(1292868060000)\/",
      //  "price": 9.99,
      //  "sizes": [
      //    "Small",
      //    "Medium",
      //    "Large"
      //  ]
      //}

      Assert.AreEqual(@"{
  ""name"": ""Widget"",
  ""expiryDate"": ""\/Date(1292868060000)\/"",
  ""price"": 9.99,
  ""sizes"": [
    ""Small"",
    ""Medium"",
    ""Large""
  ]
}", json);
    }
    public void SerializeEmptyAndNullStrings()
    {
      Product p = new Product();
      p.ExpiryDate = DateTime.Parse("2009-04-05T14:45:00Z");
      p.Name = null;
      p.Price = 9.95m;
      p.Sizes = new[] { "Small", "", null };

      MemoryStream ms = new MemoryStream();
      JsonSerializer serializer = new JsonSerializer();

      BsonWriter writer = new BsonWriter(ms);
      serializer.Serialize(writer, p);

      ms.Seek(0, SeekOrigin.Begin);

      BsonReader reader = new BsonReader(ms);
      Product deserializedProduct = serializer.Deserialize<Product>(reader);

      Console.WriteLine(deserializedProduct.Name);

      Assert.AreEqual(null, deserializedProduct.Name);
      Assert.AreEqual(9.95m, deserializedProduct.Price);
      Assert.AreEqual(3, deserializedProduct.Sizes.Length);
      Assert.AreEqual("Small", deserializedProduct.Sizes[0]);
      Assert.AreEqual("", deserializedProduct.Sizes[1]);
      Assert.AreEqual(null, deserializedProduct.Sizes[2]);
    }
    public void Example()
    {
      Product p = new Product();
      p.ExpiryDate = DateTime.Parse("2009-04-05T14:45:00Z");
      p.Name = "Carlos' Spicy Wieners";
      p.Price = 9.95m;
      p.Sizes = new[] { "Small", "Medium", "Large" };

      MemoryStream ms = new MemoryStream();
      JsonSerializer serializer = new JsonSerializer();

      // serialize product to BSON
      BsonWriter writer = new BsonWriter(ms);
      serializer.Serialize(writer, p);

      Console.WriteLine(BitConverter.ToString(ms.ToArray()));
      // 7C-00-00-00-02-4E-61-6D-65-00-16-00-00-00-43-61-72-6C-
      // 6F-73-27-20-53-70-69-63-79-20-57-69-65-6E-65-72-73-00-
      // 09-45-78-70-69-72-79-44-61-74-65-00-E0-51-BD-76-20-01-
      // 00-00-01-50-72-69-63-65-00-66-66-66-66-66-E6-23-40-04-
      // 53-69-7A-65-73-00-2D-00-00-00-02-30-00-06-00-00-00-53-
      // 6D-61-6C-6C-00-02-31-00-07-00-00-00-4D-65-64-69-75-6D-
      // 00-02-32-00-06-00-00-00-4C-61-72-67-65-00-00-00


      ms.Seek(0, SeekOrigin.Begin);

      // deserialize product from BSON
      BsonReader reader = new BsonReader(ms);
      Product deserializedProduct = serializer.Deserialize<Product>(reader);

      Console.WriteLine(deserializedProduct.Name);
      // Carlos' Spicy Wieners


      Assert.AreEqual("Carlos' Spicy Wieners", deserializedProduct.Name);
      Assert.AreEqual(9.95m, deserializedProduct.Price);
      Assert.AreEqual(3, deserializedProduct.Sizes.Length);
    }