Program.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  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. struct 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. [Json]
  48. struct SimpleStruct
  49. {
  50. public int field;
  51. }
  52. class Program
  53. {
  54. static void Main(string[] args)
  55. {
  56. JsonEmit.Init();
  57. var json = "{\"field\":23}";
  58. var ss = Json.Parse<SimpleStruct>(json);
  59. return;
  60. /*
  61. var p = new Person()
  62. {
  63. StringField = "Hello World",
  64. IntField = 23,
  65. DoubleField = 99.99,
  66. BoolField = false,
  67. CharField = 'X',
  68. DateTimeField = DateTime.Now,
  69. BlobField = new byte[] { 1, 2, 3, 4},
  70. StuffsField = new List<Stuff>() { new Stuff() { Name="Brad", Address="Home" } },
  71. StringProp = "Hello World",
  72. IntProp = 23,
  73. DoubleProp = 99.99,
  74. BoolProp = false,
  75. CharProp = 'X',
  76. DateTimeProp = DateTime.Now,
  77. BlobProp = new byte[] { 1, 2, 3, 4},
  78. StuffsProp = new List<Stuff>() { new Stuff() { Name="Brad", Address="Home" } },
  79. NullableField1 = null,
  80. NullableField2 = 23,
  81. NullableProp1 = null,
  82. NullableProp2 = 23,
  83. };
  84. var json = Json.Format(p);
  85. Console.WriteLine(json);
  86. var p2 = Json.Parse<Person>(json);
  87. Console.WriteLine();
  88. Console.WriteLine();
  89. var json2 = Json.Format(p2);
  90. Console.WriteLine(json2);
  91. */
  92. }
  93. }
  94. }