Program.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using PetaJson;
  6. using System.Globalization;
  7. using System.Runtime.Serialization.Json;
  8. using System.IO;
  9. using System.Runtime.Serialization;
  10. namespace EmitDev
  11. {
  12. [Json]
  13. class Stuff
  14. {
  15. public string Name;
  16. public string Address;
  17. }
  18. [Json]
  19. struct Person : IJsonWriting, IJsonWritten
  20. {
  21. public string StringField;
  22. public int IntField;
  23. public double DoubleField;
  24. public bool BoolField;
  25. public char CharField;
  26. public DateTime DateTimeField;
  27. public byte[] BlobField;
  28. public List<Stuff> StuffsField;
  29. public string StringProp { get; set; }
  30. public int IntProp { get; set; }
  31. public double DoubleProp { get; set; }
  32. public bool BoolProp { get; set; }
  33. public char CharProp { get; set; }
  34. public DateTime DateTimeProp { get; set; }
  35. public byte[] BlobProp { get; set; }
  36. public List<Stuff> StuffsProp { get; set; }
  37. public int? NullableField1;
  38. public int? NullableField2;
  39. public int? NullableProp1;
  40. public int? NullableProp2;
  41. void IJsonWritten.OnJsonWritten(IJsonWriter w)
  42. {
  43. w.WriteRaw("/* OnJsonWritten */ ");
  44. }
  45. void IJsonWriting.OnJsonWriting(IJsonWriter w)
  46. {
  47. w.WriteRaw("/* OnJsonWriting */");
  48. }
  49. }
  50. [DataContract]
  51. class DCTest
  52. {
  53. [DataMember(Name="AAA")] public string ZZZ;
  54. [DataMember] private int priv;
  55. [DataMember] public string Prop { get; set; }
  56. [DataMember] public string Field;
  57. }
  58. class Program
  59. {
  60. static void Main(string[] args)
  61. {
  62. Json.WriteWhitespaceDefault = false;
  63. var dc = new DCTest() { Prop = "Hi", Field = "Bye" };
  64. var ser = new DataContractJsonSerializer(typeof(DCTest));
  65. var memStream = new MemoryStream();
  66. ser.WriteObject(memStream, dc);
  67. var str = Encoding.UTF8.GetString(memStream.GetBuffer());
  68. Console.WriteLine(str);
  69. Console.WriteLine(Json.Format(dc));
  70. return;
  71. var p = new Person()
  72. {
  73. StringField = "Hello World",
  74. IntField = 23,
  75. DoubleField = 99.99,
  76. BoolField = false,
  77. CharField = 'X',
  78. DateTimeField = DateTime.Now,
  79. BlobField = new byte[] { 1, 2, 3, 4},
  80. StuffsField = new List<Stuff>() { new Stuff() { Name="Brad", Address="Home" } },
  81. StringProp = "Hello World",
  82. IntProp = 23,
  83. DoubleProp = 99.99,
  84. BoolProp = false,
  85. CharProp = 'X',
  86. DateTimeProp = DateTime.Now,
  87. BlobProp = new byte[] { 1, 2, 3, 4},
  88. StuffsProp = new List<Stuff>() { new Stuff() { Name="Brad", Address="Home" } },
  89. NullableField1 = null,
  90. NullableField2 = 23,
  91. NullableProp1 = null,
  92. NullableProp2 = 23,
  93. };
  94. var json = Json.Format(p);
  95. Console.WriteLine(json);
  96. var p2 = Json.Parse<Person>(json);
  97. Console.WriteLine();
  98. Console.WriteLine();
  99. var json2 = Json.Format(p2);
  100. Console.WriteLine(json2);
  101. }
  102. }
  103. }