我怎样才能得到 JSON 数组的所有值

How can i get all values of JSON array

我有这个 JSON 回复:

{
    "post_parameters_error_flag": false,
    "data_error_flag": false,
    "row_count": 7,
    "message": "Operazione completata.",
    "title": [
        "title0",
        "title1",
        "title2",
        "title3",
        "title4",
        "title5",
        "title6"
    ],
    "data": [
        "value0",
        "value1",
        "value2",
        "value3",
        "value4",
        "value5",
        "value6",
        "value7"
    ]
}

我需要在列表中写入(例如)从 'data' 数组获得的所有值,但我不知道如何从响应中获取数据:

string URL = "myurl";
string Params = string.Format("hwid={0}&building={1}", Utils.UUID(), "test");

Request HTTPRequest = new Request();

JObject JSONObject = JObject.Parse(await HTTPRequest.PostAsyncResponse(URL, Params));

//now? what can i do

有什么解决办法吗?

你可以这样使用:

var result = await HTTPRequest.PostAsyncResponse(URL, Params)
var token = JToken.Parse(result);
var data= token.Value<JArray>("data");

或者你也可以使用 JsonPath:

var result = await HTTPRequest.PostAsyncResponse(URL, Params)
var token = JToken.Parse(result);
var data = token.SelectTokens("$.data[*]");

但实际上,您应该序列化为对象,然后使用属性获取数据(或其他属性):

public class RootObject
{
    public bool post_parameters_error_flag { get; set; }
    public bool data_error_flag { get; set; }
    public int row_count { get; set; }
    public string message { get; set; }
    public List<string> title { get; set; }
    public List<string> data { get; set; }
}

var result = await HTTPRequest.PostAsyncResponse(URL, Params)
var item = JsonConvert.DeserializeObject<RootObject>(result);
var data = item.data;

试试这个,

var data = JObject.Parse(await HTTPRequest.PostAsyncResponse(URL, Params))["data"]

var jsonObject = (JObject)JsonConvert.DeserializeObject(await HTTPRequest.PostAsyncResponse(URL, Params));
var data = (JObject)(jsonObject.Property("data").Value);