C# Newton json 사용방법 (part -1)

Software/C#|2023. 1. 10. 11:45
반응형

장비제어 프로그램 개발시에 시스템의 하드웨어 설정값등을 저장하고 불러 오는 용도로 c++ 개발툴에서는 ini 파일 저장으로 사용하였습니다. 

 

개발언어를 C#으로 변경하고 난후에는 ini 파일보다는 json 이 좀더 좋을듯 하여 코드를 만들어 보았습니다. 

아래 코드는 Newtonsoft.Json 을 사용하였습니다. Nuget을 통해 라이브러리를 추가할 수 있습니다. 

using Newtonsoft.Json.Linq;
			
private bool saveConfigData(string FileName)
{
    bool result = true ;

    var LIVObject = new JObject();
    var jsonLIVParam = new JObject();
        jsonLIVParam.Add("Start Current", 0) ;
        jsonLIVParam.Add("Stop Current", 100) ;
        jsonLIVParam.Add("Step Current", 0.1) ;

    var jarray = new JArray();
        jarray.Add(10);
        jarray.Add(20);
        jarray.Add(100);
    jsonLIVParam.Add("Array", jarray) ;

    LIVObject.Add("LIV Test", jsonLIVParam) ;   

    string st = LIVObject.ToString() ;

    using (System.IO.StreamWriter file = new System.IO.StreamWriter(FileName, false))
    {
        file.WriteLine(st);
    }

    return result ;
}

private bool loadConfigData(string FileName)
{
    bool result = true ;
    int index = 0 ;

    string text = System.IO.File.ReadAllText(FileName);
    JObject jobj = JObject.Parse(text); //문자를 객체화

    var startCurrent = int.Parse(jobj["LIV Test"]["Start Current"].ToString()) ;
    var stopCurrent = int.Parse(jobj["LIV Test"]["Stop Current"].ToString()) ;
    var stopCurrent = float.Parse(jobj["LIV Test"]["Step Current"].ToString()) ;

    var arrayData = jobj["LIV Test"]["Array"] ;
    int[] arrayValue = new int[arrayData.Count()] ;

    foreach(int elememts in arrayData)
    {
        arrayValue[index++] = elememts ;
    }

    return result ;
}

 

위의 코드는 아래와 같은 포맷의 데이타를 저장하고 불러옵니다. 

 

//------------------------------------- JSON Format ---------------------------------------------------
{
  "LIV Test": {
    "Start Current": 0,
    "Stop Current": 100,
    "Step Current": 0.1,
    "Array": [10, 20, 100]
  }
}

반응형

댓글()