形成Json格式字符串

时间:2013-07-30 10:40:50

标签: c# string.format

我正在使用此方法来形成json字符串,这很正常。但如果它包含更多属性,我无法处理。还有其他更好的方法吗?

string.Format("{0}{1}longUrl{1}:{1}{2}{1}{3}", "{", "\"", longUrl,"}");

输出

{"longUrl":"http://api.themoviedb.org/3/person/12835?api_key=2c50a994de5291887a4e062edd229a72"}

5 个答案:

答案 0 :(得分:11)

嗯,"更好"这样做的方法是使用Json库。如果这是在Asp.Net网站的上下文中(在后面的版本中),则会自动引用Json.Net库。如果没有,您可以使用Nuget添加对项目的引用或手动添加它,无论您喜欢哪个。然后你可以这样做:

JsonConvert.SerializeObject(new { longUrl = longUrl });

请注意,您也可以使用new { longUrl },并且属性名称与变量名称相同。

答案 1 :(得分:7)

您可以使用JSON.Net库。您可以创建一个要转换为JSON的实体类,而不是使用字符串格式化程序。

例如

    public class Account
    {
      public string Email { get; set; }
      public bool Active { get; set; }
      public DateTime CreatedDate { get; set; }
      public IList<string> Roles { get; set; } 
    }

Account account = new Account
  {
    Email = "james@example.com",
    Active = true,
    CreatedDate = new DateTime(2013, 1, 20, 0, 0, 0, DateTimeKind.Utc),
    Roles = new List<string>
      {
        "User",
        "Admin"
      }
  };

string json = JsonConvert.SerializeObject(account, Formatting.Indented);

Console.WriteLine(json);

输出:

// {
//   "Email": "james@example.com",
//   "Active": true,
//   "CreatedDate": "2013-01-20T00:00:00Z",
//   "Roles": [
//     "User",
//     "Admin"
//   ]
// }

答案 2 :(得分:2)

您可以使用JSON序列化程序,例如JSON.NET。如果做不到这一点,你可以稍微简化一下:

string.Format(@"{{""longUrl"":""{0}""}}", longUrl);

答案 3 :(得分:2)

您可以使用Newtonsoft.Json

using System.Text;
using Newtonsoft.Json;
using System;
using System.IO;

class Program
{
    static void Main(string[] args)
    {
        var d = new
        {
            longUrl = "http://api.themoviedb.org/3/person/12835?api_key=2c50a994de5291887a4e062edd229a72",
            someOtherProeprty = 1
        };
        var s = new JsonSerializer();
        var sb = new StringBuilder();
        using (var w = new StringWriter(sb))
        {
            s.Serialize(w, d);
        }
        Console.WriteLine(sb.ToString());
    }
}

答案 4 :(得分:0)

你可以using System.Web.Script.Serialization; 然后做

 var dict = new Dictionary<string, string>
            {
                {"longUrl","http://api.themoviedb.org/3/person/12835?api_key=2c50a994de5291887a4e062edd229a72"},
                {"anotherUrl", "another Url"}
            };

var serializer = new JavaScriptSerializer();
serializer.Serialize(dict);