JSON에 해당하는 글 2

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

Software/C#|2023. 1. 27. 14:46
반응형

part-2 에서는 part-1에서 사용된 방법에서 좀더 직관적으로 코드를 작성하는 방법을 설명합니다. 

저장되는 데이타 형식은 동일하지만 코드를 생성하거나 분석하는데 있어 좀더 직관적으로 보일 수 있습니다.

코딩량도 많이 줄어 듭니다. 

private bool saveConfigData(string FileName)
{
	bool result = true ;

	try
	{
 		var jsonLIVParam = new JObject()
		{
			{"Start Current", 0},
			{"Stop Current", 100},
			{"Step Current", 0.1},
			{"Array", new JArray { 10, 20, 100 }}
		};

		var LIVObject = new JObject()
		{
			{"LIV Test", jsonLIVParam}
		};

		using (System.IO.StreamWriter file = new System.IO.StreamWriter(FileName, false))
		{
			file.WriteLine(LIVObject.ToString());
		}
	}
	catch
	{
		result = false ;
	}
    
	return result ;
}

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

	try
	{
		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()) ;

		int[] arrayValue = new int[3] ;

		foreach(var elememts in jobj["LIV Test"]["Array"])
		{
			arrayValue[index++] = (int)elememts ;
		}
	}
	catch
	{
		result = false ;
	}
    
	return result ;
}
반응형

댓글()

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]
  }
}

반응형

댓글()