Json parser 역직렬화 deserialize
2017/11/29 - [프로그램 자료/Visual C#] - Json To Xml Converter
우선 nuget으로 Newtonsoft.Json를 받는다.
PM> Install-Package Newtonsoft.Json -Version 10.0.3
Object to JsonString
string jsonString = JObject.FromObject(T).ToString();
input Json string
.net에서 Json string을 변환할 때 배열로만 Parsing 하려면 오류가 난다.
Object 가 먼저 나와야 하며 Object의 속성에 배열을 넣어주어야 오류가 나지 않았다.
{
"TagList": [
{
"ID": "ROOT",
"Tag": "div",
"Width": 978,
"Height": 559,
"Title": "제목을 입력하세요."
},
{
"ID": "group1",
"PID": "ROOT",
"Tag": "div",
"Display": "block",
"Position": "static",
"Width": 956,
"Height": 293,
"Top": 0,
"Left": 0,
"Title": "group1"
}
]
}
Model Class
public class HtmlTag
{
public string ID { get; set; }
public string PID { get; set; }
public string TAG { get; set; }
public string DataField { get; set; }
public string DataDesc { get; set; }
public string Title { get; set; }
public string InputType { get; set; }
public string Display { get; set; }
public string Position { get; set; }
public string Top { get; set; }
public string Left { get; set; }
public string MinWidth { get; set; }
public string MinHeight { get; set; }
public string Width { get; set; }
public string Height { get; set; }
public string MustVisible { get; set; }
public HtmlTag()
{
}
}
Source
using Newtonsoft.Json.Linq;
JObject tags = JObject.Parse(jsonStringInput);
// get JSON result objects into a list
IList<JToken> results = tags["TagList"].Children().ToList();
// serialize JSON results into .NET objects
IList<HtmlTag> tagList = new List<HtmlTag>();
foreach (JToken result in results)
{
// JToken.ToObject is a helper method that uses JsonSerializer internally
HtmlTag tag = result.ToObject<HtmlTag>();
tagList.Add(tag);
}
>= .Net 4.0
public class HtmlTag
{
public string ID { get; set; }
public string PID { get; set; }
public string TAG { get; set; }
public string DataField { get; set; }
public string DataDesc { get; set; }
public string Title { get; set; }
public string InputType { get; set; }
public string Display { get; set; }
public string Position { get; set; }
public string Top { get; set; }
public string Left { get; set; }
public string MinWidth { get; set; }
public string MinHeight { get; set; }
public string Width { get; set; }
public string Height { get; set; }
public string MustVisible { get; set; }
public HtmlTag()
{
}
}
public class Tags
{
public List<HtmlTag> TagList { get; set; }
public Tags() { }
}
using System.Web.Script.Serialization;
JavaScriptSerializer jss = new JavaScriptSerializer();
Tags tList = jss.Deserialize<Tags>(val);