Skip to content

Instantly share code, notes, and snippets.

@hendrasyp
Last active December 2, 2021 07:00
Show Gist options
  • Save hendrasyp/6d5d46a34e3cd242776f57c4476c4678 to your computer and use it in GitHub Desktop.
Save hendrasyp/6d5d46a34e3cd242776f57c4476c4678 to your computer and use it in GitHub Desktop.
Json To CSharp Object
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