Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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# NewtonSoft.json-如何将json文本解析为字符串_C#_Json_Json.net - Fatal编程技术网

C# NewtonSoft.json-如何将json文本解析为字符串

C# NewtonSoft.json-如何将json文本解析为字符串,c#,json,json.net,C#,Json,Json.net,我有一个json字符串,如下所示: {\"StatusCode\":\"200\",\"ResponseMessage\":\"Success\",\"Payload\":{\"Address\":\"1 Main St.\",\"City\":\"Anytown\"}} 我希望NewtonSoft.json将其解析为以下类: public partial class HttpGetResponse { [JsonProperty("StatusCode")] public

我有一个json字符串,如下所示:

{\"StatusCode\":\"200\",\"ResponseMessage\":\"Success\",\"Payload\":{\"Address\":\"1 Main St.\",\"City\":\"Anytown\"}}
我希望NewtonSoft.json将其解析为以下类:

 public partial class HttpGetResponse
{
    [JsonProperty("StatusCode")]
    public string StatusCode { get; set; }

    [JsonProperty("ResponseMessage")]
    public string ResponseMessage { get; set; }

    [JsonProperty("Payload")]
    public string Payload { get; set; }
}
不幸的是,我无法让NewtonSoft.json代码将第三个元素(“有效负载”)视为字符串。它希望将其解析为json

有什么建议吗

或者,我使用Newtonsoft.json来做这件事是错的吗?我将在我的程序的稍后阶段使用它来解析有效负载

Payload:{
   "Address":"1 Main St.",
   "City":"Anytown"
}
正如您所看到的,
Payload
应该是一个复杂的对象,而不是
string
。因此,更改您的模型类

public class Payload
{
    public string Address { get; set; }
    public string City { get; set; }
}

public class HttpGetResponse
{
    public string StatusCode { get; set; }
    public string ResponseMessage { get; set; }
    public Payload Payload { get; set; }
}
班级

 public partial class HttpGetResponse
{
    [JsonProperty("StatusCode")]
    public string StatusCode { get; set; }

    [JsonProperty("ResponseMessage")]
    public string ResponseMessage { get; set; }

    [JsonProperty("Payload")]
    public Payload Payload { get; set; }
}
public class Payload
{
    public string Address { get; set; }
    public string City { get; set; }
}
皈依者

  string w1 = "{\"StatusCode\":\"200\",\"ResponseMessage\":\"Success\",\"Payload\":{\"Address\":\"1 Main St.\",\"City\":\"Anytown\"}}";

       HttpGetResponse w2= JsonConvert.DeserializeObject<HttpGetResponse>(w1);
string w1=“{\'StatusCode\”:“200\”,“ResponseMessage\”:“Success\”,“Payload\”:{\'Address\”:“1 Main St.\”,“City\”:“Anytown\”});
HttpGetResponse w2=JsonConvert.DeserializeObject(w1);

我认为您只需要解析出这个json对象的公共部分,有效负载会因消息而异。这样做(这意味着您不必定义一个包含“payload”的类)

dynamic parsed=JsonConvert.Deserialize(str);
var StatusCode=parsed.StatusCode;
...

如果我误传了,你真的想提取有效载荷,那就不同了。此代码不会为您提供有效负载的字符串

这很有意义,因为它不是一个字符串,而是一个具有propertiestry PayLoad.Address的对象“或者,我使用Newtonsoft.json来做这件事是错误的吗?”是的,因为它不是一个字符串。如果你还不想把它解析成一个具体的类,你可以同时使用
public object Payload{get;set;}
,这正是我想要的。谢谢我发现我也可以通过这种方式获得有效载荷@pm100,使用以下代码:JContainer jc=parsed.Payload;字符串MyPayload=jc.ToString();
dynamic parsed = JsonConvert.Deserialize<dynamic>(str);
var StatusCode = parsed.StatusCode;
...