2011-08-23 138 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

相关问题