【问题标题】:Create JSON object or string..?创建 JSON 对象或字符串..?
【发布时间】:2011-08-23 07:08:02
【问题描述】:

我们可以用 C# 中的字符串初始化 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);

给出一个字符串:[{},{}]

空数据结构,有什么想法吗?

【问题讨论】:

  • 你的问题可以改写为。 " 如何在 C# 中初始化 JSON 对象"

标签: asp.net json c#-4.0 json.net


【解决方案1】:

使用扩展方法,您希望将您的方法修补到您打算调用该方法的类型上。在这种情况下,IEnumerable 是添加您想在 List 上使用的方法的好地方:

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

重要的区别是您应该对定义类型的变量使用扩展方法。您不应该直接引用扩展方法。

【讨论】:

  • 戴夫 : List people = new List{ new Person{age = 1, name = "Scott"}, new Person{age = 2, name = "Bill"} } ;字符串 jsonString = people.ToJSON(); } } 公共静态类 JSONHelper { 公共静态字符串 ToJSON(this IEnumerable obj) { return new JavaScriptSerializer().Serialize(obj); } } }
  • DaveWard:上面的代码仍然给了我之前的结果。 [{},{}]
猜你喜欢
  • 2022-01-22
  • 2011-03-08
  • 1970-01-01
  • 2012-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-05
  • 2018-08-11
相关资源
最近更新 更多