как передать массив Json в строку - вебапи в ASP - PullRequest
3 голосов
/ 15 ноября 2011

Я использую метод post в этом методе. Я хочу передать весь Json в строку следующим образом:

{Data: "JsonArray"} в Jssonarray. Я хочу передать это значение

{   "version" : 2,
"query" : "Companies, CA",
"begin" : 1,
"end" : 3,
"totalResults" : 718,
"pageNumber" : 0,

"results" : [ 
      { "company" : "ABC Company Inc.",  "city" : "Sacramento",  "state" : "CA" } ,
      { "company" : "XYZ Company Inc.",  "city" : "San Francisco",  "state" : "CA" } ,
      { "company" : "KLM Company Inc.",  "city" : "Los Angeles",  "state" : "CA" } 
]
}

Когда я передаю это, я получаю 500 внутренняя ошибка
Пожалуйста, помогите мне, как передать весь Json в одну строку.

1 Ответ

5 голосов
/ 15 ноября 2011

Один из способов - перейти к http://json2csharp.com/,, вставить свой Json и нажать «GO».

Результат будет таким (я установил заглавные буквы):

public class Result {
    public string Company { get; set; }
    public string City { get; set; }
    public string State { get; set; }
}

public class RootObject {
    public int Version { get; set; }
    public string Query { get; set; }
    public int Begin { get; set; }
    public int End { get; set; }
    public int TotalResults { get; set; }
    public int PageNumber { get; set; }
    public Result[] Results { get; set; }
}

Вставьте это в ваше приложение.

Тогда ваш POST-метод может выглядеть так:

[WebInvoke(Method = "POST", UriTemplate = "")]
public HttpResponseMessage Add(RootObject root) {

    // do something with your root objects or its child objects...

    return new HttpResponseMessage(HttpStatusCode.Created);
}

И вы закончили с этим методом.

Другим методом является использование новых JsonValue и JsonArray, представленных в Web API, тогда как вам не нужны RootObject и Result.

Просто используйте ваш POST-метод:

[WebInvoke(Method = "POST", UriTemplate = "")]
public HttpResponseMessage Add(JsonValue json) {
    JsonArray arr = (JsonArray) json["results"];
    JsonValue result1 = arr[0];
    var company = result1["company"]; // results in "ABC Company Inc."
    return new HttpResponseMessage(HttpStatusCode.Created);
}

Вы должны получить подсказку ...

Вы можете сделать все это в порядке:

[WebInvoke(Method = "POST", UriTemplate = "")]
public HttpResponseMessage Add(JsonValue json) {
    var arr = json["results"];
    var result1 = arr[0];
    var company = result1["company"]; // results in "ABC Company Inc."
    return new HttpResponseMessage(HttpStatusCode.Created);
}
...