Nasıl bir WCF servisinden JSON temiz iade edebilirim?
XML bir hizmetten bazı JSON dönmek için çalışıyorum. Bu hizmeti sadece benim veritabanından bazı içerik döndürür. Verileri alabilirim. Ancak, benim JSON biçimi hakkında endişe duyuyorum. Şu anda, geri alır JSON bu gibi biçimlendirilmiş:
{"d":"[{\"Age\":35,\"FirstName\":\"Peyton\",\"LastName\":\"Manning\"},{\"Age\":31,\"FirstName\":\"Drew\",\"LastName\":\"Brees\"},{\"Age\":29,\"FirstName\":\"Tony\",\"LastName\":\"Romo\"}]"}
Gerçekte, benim JSON olabildiğince olarak temiz bir şekilde biçimlendirilmiş olmak istiyorum. Sanırım (yanlış olabilirim) sonuç aynı toplama, temiz JSON temsil, gibi görünmelidir:
[{"Age":35,"FirstName":"Peyton","LastName":"Manning"},{"Age":31,"FirstName":"Drew","LastName":"Brees"},{"Age":29,"FirstName":"Tony","LastName":"Romo"}]
Nerede hiçbir fikrim yok “d” geliyor. Ben de kaçış karakteri yerleştirildi neden hiçbir ipucu var. Benim varlık aşağıdaki gibidir:
[DataContract]
public class Person
{
[DataMember]
public string FirstName { get; set; }
[DataMember]
public string LastName { get; set; }
[DataMember]
public int Age { get; set; }
public Person(string firstName, string lastName, int age)
{
this.FirstName = firstName;
this.LastName = lastName;
this.Age = age;
}
}
İçerik dönen ve sorumlu bir hizmet olarak tanımlanır:
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class TestService
{
[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json)]
public string GetResults()
{
List<Person> results = new List<Person>();
results.Add(new Person("Peyton", "Manning", 35));
results.Add(new Person("Drew", "Brees", 31));
results.Add(new Person("Tony", "Romo", 29));
// Serialize the results as JSON
DataContractJsonSerializer serializer = new DataContractJsonSerializer(results.GetType());
MemoryStream memoryStream = new MemoryStream();
serializer.WriteObject(memoryStream, results);
// Return the results serialized as JSON
string json = Encoding.Default.GetString(memoryStream.ToArray());
return json;
}
}
Nasıl “” JSON gelen XML bir hizmet?temiz iade edebilirim Teşekkür ederim!
CEVAP
Senin GetResults dönüş türü List<Person>
olarak değiştirin.
Bir json dizeye Listesi seri hale getirmek için kullandığınız kod ortadan kaldırmak - XML sizin için bunu otomatik olarak yapar.
Kişi sınıfı için tanım kullanarak, bu kod benim için çalışıyor:
public List<Person> GetPlayers()
{
List<Person> players = new List<Person>();
players.Add(new Person { FirstName="Peyton", LastName="Manning", Age=35 } );
players.Add(new Person { FirstName="Drew", LastName="Brees", Age=31 } );
players.Add(new Person { FirstName="Brett", LastName="Favre", Age=58 } );
return players;
}
sonuçlar:
[{"Age":35,"FirstName":"Peyton","LastName":"Manning"},
{"Age":31,"FirstName":"Drew","LastName":"Brees"},
{"Age":58,"FirstName":"Brett","LastName":"Favre"}]
(Bir satır)
Ben de yöntemi bu özniteliği kullanılır:
[WebInvoke(Method = "GET",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "players")]
Webİnvoke Yöntemi ile= "" WebGet aynıdır, ama benim yöntemlerden bazıları POST olduğundan, tutarlılık. tüm Webİnvoke ben kullanabilirsiniz
Bu UriTemplate hangi yöntem kullanılabilir URL'Yİ ayarlar. Üzerinde alabilirim böylece ** 15 ve çok işe yarıyor.
Ayrıca İİRF ya da başka bir URL yeniden yazma kurtulmak için kontrol edin .URİ svc.
Nasıl belirli bir değeri olan satırlar...
Nasıl bir dize Python geçerli JSON ise...
Nasıl JSON verilerini kullanarak gönde...
Nasıl bir dizi belirli bir değeri vars...
Nasıl bir dize Objective-C başka bir d...