Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在c中将字符串的JArray从JObject转换为字符串数组_C#_Json_Json.net - Fatal编程技术网

C# 在c中将字符串的JArray从JObject转换为字符串数组

C# 在c中将字符串的JArray从JObject转换为字符串数组,c#,json,json.net,C#,Json,Json.net,我有一个JSON,其中一部分包含一个字符串值,如 "parent_crumbs": [ "Platforms", "STATS , EXPE , ESTAP", "Portal" ], 我使用下面的代码从JSON对象读取值 JObject _task; //parse the JSON to JOBJECT first string values= (string)_task["parent_crumbs"].ToString(

我有一个JSON,其中一部分包含一个字符串值,如

 "parent_crumbs": [
    "Platforms",
    "STATS , EXPE , ESTAP",
    "Portal"
],
我使用下面的代码从JSON对象读取值

 JObject _task; //parse the JSON to JOBJECT first               
 string values=    (string)_task["parent_crumbs"].ToString();
这将返回一个只有方括号和所有引号的字符串

如何在C中将其转换为字符串数组


我可以删除[和],然后继续拆分,但当字符串项中间出现时,整个假设都会中断。那么,是否有任何方法可以从JArray读取字符串数组

您没有发布完整的json字符串,因此我们假设它是这样的:

{
    "id": 123,
     "parent_crumbs": [
        "Platforms",
        "STATS , EXPE , ESTAP",
        "Portal"
    ]
}
您可以创建与此结构匹配的C模型,如下所示:

public class Data
{
    [JsonProperty("id")]
    public int Id { get; set; }

    [JsonProperty("parent_crumbs")]
    public List<string> ParentCrumbs { get; set; }
}
然后将json字符串反序列化为数据类的实例:

string json = @"{
    ""id"": 123,
     ""parent_crumbs"": [
        ""Platforms"",
        ""STATS , EXPE , ESTAP"",
        ""Portal""
    ]
}";

Data data = JsonConvert.DeserializeObject<Data>(json);

foreach (string crumb in data.ParentCrumbs)
{
    Console.WriteLine(crumb);
}
编辑 您可以执行以下操作,而不是反序列化整个json字符串:

string json = @"{
    ""id"": 123,
     ""parent_crumbs"": [
        ""Platforms"",
        ""STATS , EXPE , ESTAP"",
        ""Portal""
    ]
}";

JObject data = JObject.Parse(json);
JToken crumbsToken = data.GetValue("parent_crumbs");
List<string> crumbs = JsonConvert.DeserializeObject<List<string>>(crumbsToken.ToString());

// alternative way to get the string values, as suggested by @BrianRogers
List<string> crumbs = crumbsToken.ToObject<List<string>>();

您使用哪个版本的json.net/Newtonsoft.json?NUGETTry IEnumerable strings=\u task[“parent\u crumbs”]的最新版本。选择=>s.Value;您能解决您的问题吗?这是一个非常长的JSON,为所有属性构建模型对我来说并不实用。大约60多个属性,我必须作出。这就是为什么我要把内联转换成字符串或JArray@JibinMathew我在回答中添加了更多细节,请看一看。在反序列化时,请注意,您可以创建一个属性较少的模型,而且无论如何它都可以工作。@SandRock这很酷,我从来没有试过,谢谢你提供的信息:-@RuiJarimba不要把JToken转换成字符串,只是为了把它转过来反序列化。相反,可以这样使用:List crumbs=crumpstoken.ToObject;