2014-01-10 1 views
3

Я работаю над этим проектом, который должен сериализации объектов JSON на публикацию параметров с помощью RestSharp, ниже мой код:RestSharp Сериализация JSon объектов в сообщение параметры

 var request = new RestRequest(); 
     request.Method = Method.POST; 
     request.RequestFormat = DataFormat.Json; 

     request.AddBody(jsonObject); 
     return client.Execute<dynamic>(request); 

То, что я понимаю, это вместо добавления каждого JSON имя значения в качестве пост-параметра, request.AddBody добавляет всю строку JSON как один большой параметр сообщения. Мой вопрос в том, есть ли способ вызвать метод request.AddBody для добавления каждой пары имени и стоимости JSON в качестве отдельных параметров сообщения? Я знаю, что request.AddParameter() выполняет эту работу, но требует ручного усилия для добавления каждого параметра.

Вместо:

 [0]:{ 
      application/json=" 
      { 
       "name":"john doe", 
       "age": "12", 
       "gender": "male"} 
      } 
     } 

желаемого результата:

 [0]:"name":"john doe" 
    [1]:"age":"12" 
    [2]:"gender":"male" 
+0

Можете ли вы привести пример того, что вы пытаетесь выполнить? Покажите нам, с чего вы начинаете, и что вы хотите, чтобы конечный результат был. –

+0

@BrianRogers, done – danial

+1

Я не понимаю формат вашего «желаемого результата» - это не похоже на стандартный формат для тела запроса POST. Что-то вроде '? Name = john doe & age = 12 & gender = male' было бы более нормативным. Можете ли вы просто подтвердить, что это именно то, что вы имели в виду? –

ответ

1

Ответ, казалось бы перебрать ваш jsonObject и превратить каждую нужную JSON пару имя-значение в качестве параметра. Для этого вы можете использовать метод request.AddParameter в цикле, который перебирает пар имя-значение вашего jsonObject с чем-то вроде:

foreach (var pair in jsonObject) 
{ 
    request.AddParameter(pair.Key, pair.Value); 
} 

Это, вероятно, упрощенно, но с использованием библиотеки как Json.NET, она должна быть довольно легко сделать. Затем вы можете превратить эту функциональность в какой-нибудь удобный метод и повторно использовать по своему усмотрению. Нет ручного труда.

NB: Вы, вероятно, захотите удалить строку request.RequestFormat = DataFormat.Json в своем существующем коде, поскольку JSON - это именно то, что вам кажется не нравится POST.

+0

спасибо daniel, я думаю на данный момент это будет единственным решением. – danial

3
request.AddObject(jsonObject) 

должен делать то, что вы ожидаете

Цитаты из RestSharp docs:

Чтобы добавить все свойства объекта в качестве параметров, используйте AddObject().

+0

Вы должны указать, почему это должно быть сделано так, как ожидалось. Это слабый ответ без объяснения. –

+0

Это в основном замена цикла выше, делая AddParameter() для каждого поля внутри jsonObject. – berkus