2011-08-23 140 views
0

我們可以使用C#中的字符串初始化JSON對象嗎?創建JSON對象或字符串..?

喜歡:"Person": [{"age":"42","name":"John"}]

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

???

,這樣我可以直接給這個JSON對象到DatacontractJSONSerializer

,我可以得到的數據出來吧!


 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

使用擴展方法,您希望將您的方法修補到您打算調用該方法的類型上。在這種情況下,IEnumerable是一個好地方,添加要在列表使用方法:最重要的區別是,你應該使用擴展方法對抗它是針對定義的類型的變量

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(); 
} 

。你不應該直接引用擴展方法。

+0

Dave:List people = new List { {Personname = {name =「Bill」} }; string jsonString = people.ToJSON(); } } 公共靜態類JSONHelper { 公共靜態字符串的toJSON(這IEnumerable的的obj){ 返回 新JavaScriptSerializer()序列化(OBJ)。 } } } – pvaju896

+0

DaveWard:上面的代碼仍然給我以前的結果。 [{},{}] – pvaju896

相關問題