Program.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using PetaJson;
  6. using System.Globalization;
  7. namespace EmitDev
  8. {
  9. [Json]
  10. class Stuff
  11. {
  12. public string Name;
  13. public string Address;
  14. }
  15. [Json]
  16. class Person : IJsonWriting, IJsonWritten
  17. {
  18. public string StringField;
  19. public int IntField;
  20. public double DoubleField;
  21. public bool BoolField;
  22. public char CharField;
  23. public DateTime DateTimeField;
  24. public byte[] BlobField;
  25. public List<Stuff> StuffsField;
  26. public string StringProp { get; set; }
  27. public int IntProp { get; set; }
  28. public double DoubleProp { get; set; }
  29. public bool BoolProp { get; set; }
  30. public char CharProp { get; set; }
  31. public DateTime DateTimeProp { get; set; }
  32. public byte[] BlobProp { get; set; }
  33. public List<Stuff> StuffsProp { get; set; }
  34. public int? NullableField1;
  35. public int? NullableField2;
  36. public int? NullableProp1;
  37. public int? NullableProp2;
  38. void IJsonWritten.OnJsonWritten(IJsonWriter w)
  39. {
  40. w.WriteRaw("/* OnJsonWritten */ ");
  41. }
  42. void IJsonWriting.OnJsonWriting(IJsonWriter w)
  43. {
  44. w.WriteRaw("/* OnJsonWriting */");
  45. }
  46. }
  47. class Program
  48. {
  49. static void Main(string[] args)
  50. {
  51. JsonEmit.Init();
  52. var p = new Person()
  53. {
  54. StringField = "Hello World",
  55. IntField = 23,
  56. DoubleField = 99.99,
  57. BoolField = false,
  58. CharField = 'X',
  59. DateTimeField = DateTime.Now,
  60. BlobField = new byte[] { 1, 2, 3, 4},
  61. StuffsField = new List<Stuff>() { new Stuff() { Name="Brad", Address="Home" } },
  62. StringProp = "Hello World",
  63. IntProp = 23,
  64. DoubleProp = 99.99,
  65. BoolProp = false,
  66. CharProp = 'X',
  67. DateTimeProp = DateTime.Now,
  68. BlobProp = new byte[] { 1, 2, 3, 4},
  69. StuffsProp = new List<Stuff>() { new Stuff() { Name="Brad", Address="Home" } },
  70. NullableField1 = null,
  71. NullableField2 = 23,
  72. NullableProp1 = null,
  73. NullableProp2 = 23,
  74. };
  75. var json = Json.Format(p);
  76. Console.WriteLine(json);
  77. var p2 = Json.Parse<Person>(json);
  78. Console.WriteLine();
  79. Console.WriteLine();
  80. var json2 = Json.Format(p2);
  81. Console.WriteLine(json2);
  82. }
  83. }
  84. }