将JSON响应流转换为字符串

Tom*_*Tom 4 .net c# json

我正在尝试POST,然后将JSON响应读入字符串.

我相信我的问题是我需要将自己的对象传递给DataContractJsonSerializer,但我想知道是否有某种方法可以将响应转换为关联数组或某种键/值格式.

我的JSON格式如下:{"license":"AAAA-AAAA-AAAA-AAAA"},我的代码如下:

using (Stream response = HttpCommands.GetResponseStream(URL, FormatRegistrationPost(name, email)))
{
   string output = new StreamReader(response).ReadToEnd();
   response.Close();

   DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(string));
   MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(output));
   string results = json.ReadObject(ms) as string;

   licenseKey = (string) results.GetType().GetProperty("license").GetValue(results, null);
}
Run Code Online (Sandbox Code Playgroud)

谢谢!

Jos*_*rty 17

我强烈建议您查看Newtonsoft.Json:

http://james.newtonking.com/pages/json-net.aspx

NuGet:https://www.nuget.org/packages/newtonsoft.json/

将引用添加到项目后,只需using在文件顶部包含以下内容:

using Newtonsoft.Json.Linq;
Run Code Online (Sandbox Code Playgroud)

然后在您的方法中,您可以使用:

var request= (HttpWebRequest)WebRequest.Create("www.example.com/ex.json");
var response = (HttpWebResponse)request.GetResponse();
var rawJson = new StreamReader(response.GetResponseStream()).ReadToEnd();

var json = JObject.Parse(rawJson);  //Turns your raw string into a key value lookup
string license_value = json["license"].ToObject<string>();
Run Code Online (Sandbox Code Playgroud)

  • 我确信其他的反应都有效,但这让我确切地想要去哪里.此外,我自己安装JSON NET DLL并导致错误,我强烈建议在Visual Studio中使用NUGET安装程序扩展. (2认同)