Last active
December 2, 2021 07:00
-
-
Save hendrasyp/6d5d46a34e3cd242776f57c4476c4678 to your computer and use it in GitHub Desktop.
Json To CSharp Object
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using Newtonsoft.Json; | |
using System; | |
using System.Collections.Generic; | |
using System.ComponentModel; | |
using System.Data; | |
using System.Reflection; | |
namespace Netester | |
{ | |
class Program | |
{ | |
static void Main(string[] args) | |
{ | |
string jsonString = "{\"asalFaskes\":\"1\",\"rujukan\":[{\"noKunjungan\":\"102703051121P000009\",\"tglKunjungan\":\"2021-11-30\",\"provPerujuk\":{\"kode\":\"10270305\",\"nama\":\"VILA PERTIWI\"},\"peserta\":{\"noKartu\":\"0002063487947\",\"nik\":\"1404020505520001\",\"nama\":\"MAHMUD. AM\",\"pisa\":\"1\",\"sex\":\"L\",\"mr\":{\"noMR\":null,\"noTelepon\":null},\"tglLahir\":\"1952-05-05\",\"tglCetakKartu\":\"2016-06-20\",\"tglTAT\":\"2050-01-01\",\"tglTMT\":\"2016-06-20\",\"statusPeserta\":{\"kode\":\"0\",\"keterangan\":\"AKTIF\"},\"provUmum\":{\"kdProvider\":\"04060502\",\"nmProvider\":\"PENGALIHAN ENOK\"},\"jenisPeserta\":{\"kode\":\"14\",\"keterangan\":\"PEKERJA MANDIRI\"},\"hakKelas\":{\"kode\":\"1\",\"keterangan\":\"KELAS I\"},\"umur\":{\"umurSekarang\":\"69 tahun ,7 bulan ,3 hari\",\"umurSaatPelayanan\":\"69 tahun ,6 bulan ,25 hari\"},\"informasi\":{\"dinsos\":null,\"prolanisPRB\":null,\"noSKTM\":null},\"cob\":{\"noAsuransi\":null,\"nmAsuransi\":null,\"tglTMT\":null,\"tglTAT\":null}},\"diagnosa\":{\"kode\":\"Z00.0\",\"nama\":\"General medical examination\"},\"keluhan\":null,\"poliRujukan\":{\"kode\":\"MAT\",\"nama\":\"MATA\"},\"pelayanan\":{\"kode\":\"2\",\"nama\":\"Rawat Jalan\"}}]}"; | |
Dictionary<string, dynamic> jObject = jsonToObject(jsonString); | |
for (int idx = 0; idx < jObject["rujukan"].Count; idx++) | |
{ | |
var tmp = jObject["rujukan"][0]; | |
Console.WriteLine($"Dictionary<string, dynamic> jObject = jsonToObject(jsonString);"); | |
Console.WriteLine($"==================================================================="); | |
Console.WriteLine($"No Kunjungan: {tmp.noKunjungan}"); | |
Console.WriteLine($"Tanggal Kunjungan: {tmp.tglKunjungan}"); | |
Console.WriteLine($"Poli Rujukan: {tmp.poliRujukan.nama} [Kode: {tmp.poliRujukan.kode}]"); | |
Console.WriteLine($"Perujuk: {tmp.provPerujuk.nama} [Kode: {tmp.provPerujuk.kode}]"); | |
} | |
List<FooClass> foos = new List<FooClass>(); | |
Console.WriteLine($"\r\n"); | |
Console.WriteLine($"RujukanDTO rujukan = JsonConvert.DeserializeObject<RujukanDTO>(jsonString);"); | |
Console.WriteLine($"==================================================================="); | |
RujukanDTO rujukan = JsonConvert.DeserializeObject<RujukanDTO>(jsonString); | |
for (int idx = 0; idx < rujukan.rujukan.Count; idx++) | |
{ | |
FooClass foo = new FooClass(); | |
foo.kodePoli = rujukan.rujukan[idx].poliRujukan.kode; | |
foo.namaPoli = rujukan.rujukan[idx].poliRujukan.nama; | |
foo.namaPerujuk = rujukan.rujukan[idx].provPerujuk.nama; | |
foo.kodePerujuk = rujukan.rujukan[idx].provPerujuk.kode; | |
foo.noKunjungan = rujukan.rujukan[idx].noKunjungan; | |
foo.tglKunjungan = rujukan.rujukan[idx].tglKunjungan; | |
Console.WriteLine($"No Kunjungan: {rujukan.rujukan[idx].noKunjungan}"); | |
Console.WriteLine($"Tanggal Kunjungan: {rujukan.rujukan[idx].tglKunjungan}"); | |
Console.WriteLine($"Poli Rujukan: {rujukan.rujukan[idx].poliRujukan.nama} [Kode: {rujukan.rujukan[idx].poliRujukan.kode}]"); | |
Console.WriteLine($"Perujuk: {rujukan.rujukan[idx].provPerujuk.nama} [Kode: {rujukan.rujukan[idx].provPerujuk.kode}]"); | |
foos.Add(foo); | |
} | |
Console.WriteLine($"\r\n"); | |
Console.WriteLine($"Data Table"); | |
Console.WriteLine($"==================================================================="); | |
DataTable rDataTable = foos.ToDataTable(); | |
foreach (DataRow row in rDataTable.Rows) | |
{ | |
Console.WriteLine("No Kunjungan: " + row.Field<string>("noKunjungan") + ". Tanggal: " + row.Field<string>("tglKunjungan")); | |
Console.WriteLine("POLI: " + row.Field<string>("namaPoli") + " [Kode: " + row.Field<string>("kodePoli") + "]"); | |
Console.WriteLine("PERUJUK: " + row.Field<string>("namaPerujuk") + " [Kode: " + row.Field<string>("kodePerujuk") + "]"); | |
Console.ReadLine(); | |
} | |
} | |
public static Dictionary<string, dynamic> jsonToObject(string json) | |
{ | |
Newtonsoft.Json.Linq.JObject o = Newtonsoft.Json.Linq.JObject.Parse(json); | |
var xx = o.ToObject<Dictionary<string, dynamic>>(); | |
return xx; | |
} | |
} | |
} | |
public static class Extensions | |
{ | |
public static DataTable ToDataTable<T>(this IList<T> data) | |
{ | |
PropertyDescriptorCollection props = | |
TypeDescriptor.GetProperties(typeof(T)); | |
DataTable table = new DataTable(); | |
for (int i = 0; i < props.Count; i++) | |
{ | |
PropertyDescriptor prop = props[i]; | |
table.Columns.Add(prop.Name, prop.PropertyType); | |
} | |
object[] values = new object[props.Count]; | |
foreach (T item in data) | |
{ | |
for (int i = 0; i < values.Length; i++) | |
{ | |
if (props[i].PropertyType == typeof(DateTime)) | |
{ | |
DateTime currDT = (DateTime)props[i].GetValue(item); | |
values[i] = currDT.ToUniversalTime(); | |
} | |
else | |
{ | |
values[i] = props[i].GetValue(item); | |
} | |
} | |
table.Rows.Add(values); | |
} | |
return table; | |
} | |
} | |
// MODEL | |
using System.Collections.Generic; | |
namespace Netester | |
{ | |
// Root myDeserializedClass = JsonConvert.DeserializeObject<Root>(myJsonResponse); | |
public class ProvPerujuk | |
{ | |
public string kode { get; set; } | |
public string nama { get; set; } | |
} | |
public class Mr | |
{ | |
public object noMR { get; set; } | |
public object noTelepon { get; set; } | |
} | |
public class StatusPeserta | |
{ | |
public string kode { get; set; } | |
public string keterangan { get; set; } | |
} | |
public class ProvUmum | |
{ | |
public string kdProvider { get; set; } | |
public string nmProvider { get; set; } | |
} | |
public class JenisPeserta | |
{ | |
public string kode { get; set; } | |
public string keterangan { get; set; } | |
} | |
public class HakKelas | |
{ | |
public string kode { get; set; } | |
public string keterangan { get; set; } | |
} | |
public class Umur | |
{ | |
public string umurSekarang { get; set; } | |
public string umurSaatPelayanan { get; set; } | |
} | |
public class Informasi | |
{ | |
public object dinsos { get; set; } | |
public object prolanisPRB { get; set; } | |
public object noSKTM { get; set; } | |
} | |
public class Cob | |
{ | |
public object noAsuransi { get; set; } | |
public object nmAsuransi { get; set; } | |
public object tglTMT { get; set; } | |
public object tglTAT { get; set; } | |
} | |
public class Peserta | |
{ | |
public string noKartu { get; set; } | |
public string nik { get; set; } | |
public string nama { get; set; } | |
public string pisa { get; set; } | |
public string sex { get; set; } | |
public Mr mr { get; set; } | |
public string tglLahir { get; set; } | |
public string tglCetakKartu { get; set; } | |
public string tglTAT { get; set; } | |
public string tglTMT { get; set; } | |
public StatusPeserta statusPeserta { get; set; } | |
public ProvUmum provUmum { get; set; } | |
public JenisPeserta jenisPeserta { get; set; } | |
public HakKelas hakKelas { get; set; } | |
public Umur umur { get; set; } | |
public Informasi informasi { get; set; } | |
public Cob cob { get; set; } | |
} | |
public class Diagnosa | |
{ | |
public string kode { get; set; } | |
public string nama { get; set; } | |
} | |
public class PoliRujukan | |
{ | |
public string kode { get; set; } | |
public string nama { get; set; } | |
} | |
public class Pelayanan | |
{ | |
public string kode { get; set; } | |
public string nama { get; set; } | |
} | |
public class Rujukan | |
{ | |
public string noKunjungan { get; set; } | |
public string tglKunjungan { get; set; } | |
public ProvPerujuk provPerujuk { get; set; } | |
public Peserta peserta { get; set; } | |
public Diagnosa diagnosa { get; set; } | |
public object keluhan { get; set; } | |
public PoliRujukan poliRujukan { get; set; } | |
public Pelayanan pelayanan { get; set; } | |
} | |
public class RujukanDTO | |
{ | |
public string asalFaskes { get; set; } | |
public List<Rujukan> rujukan { get; set; } | |
} | |
public class FooClass | |
{ | |
public string noKunjungan { get; set; } | |
public string tglKunjungan { get; set; } | |
public string namaPoli { get; set; } | |
public string kodePoli { get; set; } | |
public string namaPerujuk { get; set; } | |
public string kodePerujuk { get; set; } | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment