如何从WebRequest

时间:2018-06-21 14:28:16

标签: asp.net json httpwebrequest

我正在创建一个ASP.Net API,以便从服务器获取一些信息。我创建了一个控制器,在其中发送获取请求。响应是一个json字符串。我想稍微编辑一下这个json:我想摆脱一些属性。我对JSON一无所知,因此我需要一些帮助才能将该字符串解析为json文件,对其进行编辑并将其转换回json字符串。

我的json字符串很好。到目前为止,这是我的代码:

public class MyController : Controller
{
    [HttpGet("{date}/{id}/{no}")]
    public string Get(string date, string id, string no)
    {
        try
        {
            string dateParsed = date.Replace("-", "/");
            string myUrl = "https://someurl/.../..";

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(myUrl);
            request.Headers["someKey"] = "<KEY>";
            request.Accept = "application/json";
            request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;

            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
            using (Stream stream = response.GetResponseStream())
            using (StreamReader reader = new StreamReader(stream))
            {
                string responseFromServer = reader.ReadToEnd();

                // TODO Edit the json!

                return responseFromServer;
            }
        }
        catch (Exception exception)
        {
            Console.WriteLine(exception.ToString());
            return exception.ToString();
        }
    }
}

那么我是否必须定义一个必须使用JSON反序列化器实例化的对应c#对象,然后创建所需的c#对象并复制值?

我看到了这样的解决方案:(已注释掉另一种方法)

var responseFromServer = reader.ReadToEnd();
JavaScriptSerializer js = new JavaScriptSerializer();
Response responseJSON = (Response)js.Deserialize(responseFromServer, typeof(Response));
//var responseJSON = JsonConvert.DeserializeObject<Response>(responseFromServer);

与此有关的问题是,拥有两个对象层次结构并将其转换似乎很容易出错。

没有办法对json字符串本身进行操作吗?预先感谢

0 个答案:

没有答案