2011-08-23 2 views
0

C#에서 JSON 객체를 문자열로 초기화 할 수 있습니까?JSON 개체 또는 문자열 ..을 만드시겠습니까?

는 같은 "Person": [{"age":"42","name":"John"}]

object JsonData = "Person": [{"age":"42","name":"John"}];

로 ??

그래서 내가 DatacontractJSONSerializer

에 직접 JSON 객체를 제공 할 수 있습니다 그리고 난 그것을 밖으로 데이터를 얻을 수있다.! , 어떤 생각을 [{},{}]

빈 데이터 구조 .. :


 List<Person> people = new List<Person>{ 
        new Person{age = 1, name = "Scott"}, 
        new Person{age = 2, name = "Bill"} 
        }; 




      string jsonString = ExtensionMethods.JSONHelper.ToJSON(people); 


     } 

    } 
} 
namespace ExtensionMethods 
{ 
    public static class JSONHelper 
    { 
     public static string ToJSON(this object obj) 
     { 
      JavaScriptSerializer serializer = new JavaScriptSerializer(); 
      return serializer.Serialize(obj); 
     } 

     public static string ToJSON(this object obj, int recursionDepth) 
     { 
      JavaScriptSerializer serializer = new JavaScriptSerializer(); 
      serializer.RecursionLimit = recursionDepth; 
      return serializer.Serialize(obj); 
     } 
    } 
} 

그래서,

string jsonString = ExtensionMethods.JSONHelper.ToJSON(people); 

는 문자열을 제공합니다?

+0

으로 문의하실 수 있습니다. "C#에서 JSON 객체를 초기화하는 방법" –

+0

예 거의 ... !! – pvaju896

답변

0

확장 메서드를 사용하면 해당 메서드를 호출 할 형식에 메서드를 패치해야합니다.

public class Person { 
    public int age { get; set; } 
    public string name { get; set; } 
} 

public static class JSONHelper { 
    public static string ToJSON(this IEnumerable obj) { 
    return new JavaScriptSerializer().Serialize(obj); 
    } 
} 

void Main() { 
    List<Person> people = new List<Person> { 
    new Person() { age = 1, name = "Scott" }, 
    new Person() { age = 2, name = "Bill" } 
    }; 

    // [{"age":1,"name":"Scott"},{"age":2,"name":"Bill"}] 
    string json = people.ToJSON(); 
} 

중요한 차이점은 당신이에 대해 정의되어 유형의 변수에 대한 확장 방법을 사용한다는 것입니다 :이 경우, IEnumerable 당신이 목록에서 사용하려는 방법을 추가 할 수있는 좋은 장소입니다. 확장 메서드를 직접 참조하면 안됩니다.

+0

Dave : 목록 사람 = 새 목록 { 새 사람 {age = 1, name = "Scott"}, 새 사람 {age = 2, name = "Bill"} }; string jsonString = people.ToJSON(); } } 공공 정적 클래스 JSONHelper { 공공 정적 문자열 ToJSON (이 IEnumerable을 OBJ) {새로운 JavaScriptSerializer() 직렬화 (OBJ)을 반환 .; } } } – pvaju896

+0

DaveWard : 위의 코드는 여전히 이전 결과를 제공합니다. [{}, {}] – pvaju896