Невозможно преобразовать массив в строку

Я использую следующий WebMethod-

[WebMethod]
    public string get_IDs(string uid)
    {


        string url = "www.foobar.com/id=-1&user_id=" + uid";

        String data = SearchData(url);

        JObject o = JObject.Parse(data);

        string ids = (string)o["ids"];


        return ids;
    }

Моя проблема заключается в том, что возвращаемые данные находятся в форме массива, я хочу вернуть их в виде строки, однако это вызывает исключение, которое не может преобразовать массив в строку. Как я могу это сделать?


person Ebikeneser    schedule 02.05.2012    source источник
comment
Я не уверен, что понимаю - SearchData возвращает Array, а не String? Где у вас исключение?   -  person David Hoerster    schedule 02.05.2012
comment
Как идентификаторы (множественное число) будут возвращены в виде одной строки?   -  person IAmGroot    schedule 02.05.2012
comment
@David Hoerster да SearchData возвращает JSON, в котором JSON Я пытаюсь получить идентификаторы, которые находятся в массиве. Я пытаюсь вернуть это как строку, но не могу преобразовать ее в строку?   -  person Ebikeneser    schedule 02.05.2012


Ответы (3)


Я разобрал -

string followers = (string)o["ids"].ToString();
person Ebikeneser    schedule 02.05.2012

Вы не можете сделать o["ids"].ToString(); ??

Я не знаком с классом JObject, поэтому, если у него нет функции ToArray, и если вы ожидаете более 1 идентификатора через переменную JObject o, вы можете попробовать:

public List<string> get_IDs(string uid)
{


    string url = "www.foobar.com/id=-1&user_id=" + uid";

    String data = SearchData(url);

    JObject o = JObject.Parse(data);

    List<string> ids = new List<string>();

    foreach (obj in o) {
       ids.add(obj.ToString());
    } 
    return ids;

}

Обратите внимание на тип метода от string до List<string>.

person Darren    schedule 02.05.2012

Ты можешь использовать

string result = string.Join(";", array);
return result;

Какой тип o["ids"]?

var ids = (string)o["ids"];
console.WriteLine(ids.GetType());

Если ids относится к типу int[], вы должны преобразовать все элементы в String. См .: Приведение всего массива C #?

var strIds = Array.ConvertAll(ids, item => (String)item);
string result = string.Join(";", strIds);
return result;

Если ids - это JObject, вы можете использовать функцию ffollowing для JObject:

public override IEnumerable<T> Values<T>()

IEnumerable<String> strIds = ids.Values<String>();

И при необходимости преобразуйте Enumerable в один String: C # IEnumerable ‹Object› в строку

person Tarion    schedule 02.05.2012