재우니의 블로그

json 문자열을 object 에 담기 또는 파싱하기

https://stackoverflow.com/a/2246724



The following 2 examples make use of either

JavaScriptSerializer under System.Web.Script.Serialization Or
Json.Decode under System.Web.Helpers

Example 1: 

using System.Web.Script.Serialization 
using Microsoft.VisualStudio.TestTools.UnitTesting; 
using System.Web.Script.Serialization; 

namespace Tests 
{ 
    [TestClass] 
    public class JsonTests 
    { 
        [TestMethod] 
        public void Test() 
        { 
            var json = "{\"user\":{\"name\":\"asdf\",\"teamname\":\"b\",\"email\":\"c\",\"players\":[\"1\",\"2\"]}}"; 
            JavaScriptSerializer serializer = new JavaScriptSerializer(); 
            dynamic jsonObject = serializer.Deserialize(json); 

            dynamic x = jsonObject["user"]; // result is Dictionary<string,object> user with fields name, teamname, email and players with their values 
            x = jsonObject["user"]["name"]; // result is asdf 
            x = jsonObject["user"]["players"]; // result is object[] players with its values 
        } 
    } 
}


Usage: JSON object to Custom C# object

using System; 
using Microsoft.VisualStudio.TestTools.UnitTesting; 
using System.Web.Script.Serialization; 
using System.Linq; 

namespace Tests 
{ 
    [TestClass] 
    public class JsonTests 
    { 
        [TestMethod] 
        public void TestJavaScriptSerializer() 
        { 
            var json = "{\"user\":{\"name\":\"asdf\",\"teamname\":\"b\",\"email\":\"c\",\"players\":[\"1\",\"2\"]}}"; 
            User user = new User(json); 
            Console.WriteLine("Name : " + user.name); 
            Console.WriteLine("Teamname : " + user.teamname); 
            Console.WriteLine("Email : " + user.email); 
            Console.WriteLine("Players:"); 
            foreach (var player in user.players) 
                Console.WriteLine(player); 
        } 
    } 

    public class User { 
        public User(string json) { 
            JavaScriptSerializer serializer = new JavaScriptSerializer(); 
            var jsonObject = serializer.Deserialize(json); 
            name = (string)jsonObject["user"]["name"]; 
            teamname = (string)jsonObject["user"]["teamname"]; 
            email = (string)jsonObject["user"]["email"]; 
            players = jsonObject["user"]["players"]; 
        } 

        public string name { get; set; } 
        public string teamname { get; set; } 
        public string email { get; set; } 
        public Array players { get; set; } 
    } 
}


Example 2: using System.Web.Helpers

using Microsoft.VisualStudio.TestTools.UnitTesting; 
using System.Web.Helpers; 

namespace Tests 
{ 
    [TestClass] 
    public class JsonTests 
    { 
        [TestMethod] 
        public void TestJsonDecode() 
        { 
            var json = "{\"user\":{\"name\":\"asdf\",\"teamname\":\"b\",\"email\":\"c\",\"players\":[\"1\",\"2\"]}}"; 
            dynamic jsonObject = Json.Decode(json); 

            dynamic x = jsonObject.user; // result is dynamic json object user with fields name, teamname, email and players with their values 
            x = jsonObject.user.name; // result is asdf 
            x = jsonObject.user.players; // result is dynamic json array players with its values 
        } 
    } 
}


Usage: JSON object to Custom C# object

using System; 
using Microsoft.VisualStudio.TestTools.UnitTesting; 
using System.Web.Helpers; 
using System.Linq; 

namespace Tests 
{ 
    [TestClass] 
    public class JsonTests 
    { 
        [TestMethod] 
        public void TestJsonDecode() 
        { 
            var json = "{\"user\":{\"name\":\"asdf\",\"teamname\":\"b\",\"email\":\"c\",\"players\":[\"1\",\"2\"]}}"; 
            User user = new User(json); 
            Console.WriteLine("Name : " + user.name); 
            Console.WriteLine("Teamname : " + user.teamname); 
            Console.WriteLine("Email : " + user.email); 
            Console.WriteLine("Players:"); 
            foreach (var player in user.players) 
                Console.WriteLine(player); 
        } 
    } 

    public class User { 
        public User(string json) { 
            var jsonObject = Json.Decode(json); 
            name = (string)jsonObject.user.name; 
            teamname = (string)jsonObject.user.teamname; 
            email = (string)jsonObject.user.email; 
            players = (DynamicJsonArray) jsonObject.user.players; 
        } 

        public string name { get; set; } 
        public string teamname { get; set; } 
        public string email { get; set; } 
        public Array players { get; set; } 
    } 
} 


This code requires adding System.Web.Helpers namespace found in,

%ProgramFiles%\Microsoft ASP.NET\ASP.NET Web Pages{VERSION}\Assemblies\System.Web.Helpers.dll

Or

%ProgramFiles(x86)%\Microsoft ASP.NET\ASP.NET Web Pages{VERSION}\Assemblies\System.Web.Helpers.dll

Hope this helps!