2013-12-12 2 views
1

У меня есть массив объектов, исходя из службы что-то вроде этогоПреобразовать массив KeyValue Pair Для Json строки

[0]= { 
     Name=Only for Testing 
     soldTo=0039000000 
     city=Testing 
     State=IN 
     address1=Testing 
     address2= 
     zip=5600 
     country=US 
    } 

так может это нравится. Мне нужно вернуть это в Js, чтобы я мог анализировать и связывать значения с элементами управления пользовательского интерфейса.

Как преобразовать этот массив в строку Json?

+4

Сделали вы какие-либо исследования? – zerkms

+0

Какие конкретные серверные технологии вы используете для этого? –

+0

Я отредактировал ваш заголовок. Пожалуйста, смотрите: «Если вопросы включают« теги »в их названиях?] (Http://meta.stackexchange.com/questions/19190/), где консенсус« нет, они не должны ». –

ответ

1

Поскольку у вас есть класс, представляющий данные, возвращаемые из службы, если вы не возражаете вернуть все свойства класса клиенту, просто используйте один из многих сериализаторов json. Начать здесь: http://www.nuget.org/packages?q=json

Если вы хотите уменьшить количество полей, которые сериализуются, создайте свой собственный класс, преобразуйте объект службы в свой собственный класс и затем сериализуйте его с использованием тех же методов.

Это документация Json.Net, посвященная сериализации. http://james.newtonking.com/json/help/index.html

Update: Показать преобразования и сериализации

Примечание: Использование ServiceStack Serializer https://github.com/ServiceStack/ServiceStack.Text

// get data from the service 
var serviceData = new List<ServiceObject> 
{ 
    new ServiceObject { name = "one", soldTo = "00000123", city = "sydney", state = "nsw", addressLine1 = "king st", addressLine2 = "", zip = "0123", country = "australia" }, 
    new ServiceObject { name = "two", soldTo = "00000456", city = "melbourne", state = "vic", addressLine1 = "william st", addressLine2 = "", zip = "0456", country = "australia" }, 
    new ServiceObject { name = "three", soldTo = "00000789", city = "adelaide", state = "sa", addressLine1 = "county cres", addressLine2 = "", zip = "0789", country = "australia" } 
}; 

// convert it to what you want to return 
var jsData = (from row in serviceData 
       select new JsObject 
       { 
        name = row.name, 
        soldTo = row.soldTo, 
        address = new JsAddress 
        { 
         line1 = row.addressLine1, 
         line2 = row.addressLine2, 
         postCode = row.zip, 
         state = row.state, 
         country = row.country 
        } 
       }).ToList(); 

// turn it into a json string 
var json = JsonSerializer.SerializeToString(jsData); 

// this will spit out the result when using Linqpad 
json.Dump("json"); 

} 

class ServiceObject 
{ 
    public string name { get; set; } 
    public string soldTo { get; set; } 
    public string city { get; set; } 
    public string state { get; set; } 
    public string addressLine1 { get; set; } 
    public string addressLine2 { get; set; } 
    public string zip { get; set; } 
    public string country { get; set; } 
} 

class JsObject 
{ 
    public string name { get; set; } 
    public string soldTo { get; set; } 
    public JsAddress address { get; set; } 
} 

class JsAddress 
{ 
    public string line1 { get; set; } 
    public string line2 { get; set; } 
    public string state { get; set; } 
    public string postCode { get; set; } 
    public string country { get; set; } 

Приветствия, Аарон

+0

Это сработало для меня Спасибо – user1855588

Смежные вопросы