无法将Array转换为String

时间:2012-05-02 11:17:47

标签: c# arrays webmethod

我正在使用以下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;
    }

我的问题是返回的数据是数组形式,我希望它作为一个字符串返回,但是这会引发一个异常,即将数组转换为字符串。我怎么能这样做?

3 个答案:

答案 0 :(得分:2)

我对它进行了分类 -

string followers = (string)o["ids"].ToString();

答案 1 :(得分:0)

你不能做o["ids"].ToString(); ??

我不熟悉JObject类,所以如果没有ToArray函数,如果你期望通过JObject o变量获得超过1个ID,你可以尝试:

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;

}

请注意,方法类型有stringList<string>

答案 2 :(得分:0)

您可以使用

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

o["ids"]的类型是什么?

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

如果ids的类型为int[],则必须将所有元素投射到String。请参阅:C# Cast Entire Array?

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

如果idsJObject,您可以使用JObject的以下功能:

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

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

如果需要,将可枚举转换为单个StringC# IEnumerable<Object> to string