检查响应字符串是 JSON 对象还是 XML?

Posted

技术标签:

【中文标题】检查响应字符串是 JSON 对象还是 XML?【英文标题】:Check if a response string is a JSON Object or an XML? 【发布时间】:2017-06-18 20:32:47 【问题描述】:

检查响应字符串是 JSON 对象还是 XML 的 C# 代码?

我正在尝试这个:

string responseString = jQuery.parseJSON(response.Content.ReadAsStringAsync().Result);

但如果结果不是有效的 JSON 对象,这将引发异常。 (在某些情况下,这会为我返回 XML 内容)我想避免异常处理。是否有任何方法返回 bool 以检查这是否是有效的 json?

【问题讨论】:

检查响应的内容类型。 为什么要避免异常处理? 正如 Kalten 所说,查看响应的内容类型,例如***.com/questions/11945201/… How to get content type of a web address?的可能重复 可能你必须解析它,即使媒体类型是 json/xml,我想也可能是格式错误。 【参考方案1】:

在字符串级别:


using Newtonsoft.Json.Linq;
using Newtonsoft.Json;
public static class Extentions


    public static bool IsValidJson(this string value)
    
        try
        
            var json = JContainer.Parse(value);
            return true;
        
        catch
        
            return false;
        
    


【讨论】:

【参考方案2】:

检查响应消息的内容类型。

if (response.Content.Headers.ContentType.MediaType == "application/json")

    // parse json

else

    // parse xml

您还可以从响应中读取第一个字符。 如果是 XML 内容,您应该找到 <。即使 XML 声明存在与否。

【讨论】:

以上是关于检查响应字符串是 JSON 对象还是 XML?的主要内容,如果未能解决你的问题,请参考以下文章

Java 检查字符串是有效的 JSON 还是有效的 XML,或者两者都不是

如何检查 JSON 对象键是对象还是字符串? [复制]

关于json 是字符串还是对象的问题

如何检查获取的响应是不是是javascript中的json对象

如何检查json返回值是数组还是字典的形式

如何在C#中创建JSON字符串