Program.cs 2.7 KB

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