2013-07-30 11 views
5

Tôi đang sử dụng phương pháp này để tạo thành chuỗi json và điều này hoạt động tốt. Nhưng tôi không thể xử lý này nếu nó có nhiều thuộc tính hơn. Có phương pháp nào khác tốt hơn thế này không?Tạo chuỗi định dạng Json

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

Đầu ra là

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

Trả lời

8

Vâng, một "tốt hơn" cách để làm điều này sẽ được sử dụng một thư viện Json. Nếu điều này là trong bối cảnh của một trang web Asp.Net (trong các phiên bản sau), có thư viện Json.Net được tự động tham chiếu. Nếu không, bạn có thể sử dụng Nuget để thêm một tham chiếu đến dự án của bạn hoặc thêm thủ công nó, tùy theo ý thích của bạn. Sau đó, bạn có thể làm:

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

Lưu ý rằng bạn cũng có thể chỉ sử dụng new { longUrl } và tên thuộc tính sẽ giống với tên biến của bạn.

+0

Cảm ơn này đang làm việc tốt ... –

+0

Nó nên được 'JsonConvert.SerializeObject (mới {longUrl = longUrl});' dù :) – ajgarn

+0

@ajgarn Đó là chính xác. Sửa lỗi. :) –

2

Bạn chỉ có thể sử dụng trình nối tiếp JSON như JSON.NET. Nếu không được, bạn có thể đơn giản hóa hơi:

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

Tôi tin rằng nó sẽ không hoạt động. Có nhiều {và} khác {0} và đó là vấn đề đối với string.Format(). – wooohoh

1

Bạn có thể sử dụng 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()); 
    } 
} 
0

bạn có thể using System.Web.Script.Serialization; sau đó làm

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

Bạn có thể sử dụng JSON.Net thư viện. Bạn có thể tạo một lớp thực thể mà bạn muốn chuyển sang JSON thay vì sử dụng trình định dạng chuỗi.

ví dụ:

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 = "[email protected]", 
    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); 

đầu ra:

// { 
// "Email": "[email protected]", 
// "Active": true, 
// "CreatedDate": "2013-01-20T00:00:00Z", 
// "Roles": [ 
//  "User", 
//  "Admin" 
// ] 
// } 
+0

+1, Cảm ơn bạn đã giải thích chi tiết –