当前位置: 首页 > 面试题库 >

确定Json结果是对象还是数组

袁开宇
2023-03-14
问题内容

我正在使用.net Web
API来获取json并将其返回给前端以获取角度。json可以是对象或数组。我的代码当前仅适用于数组,而不适用于对象。我需要找到一种方法来尝试解析或确定内容是否是对象或数组。

这是我的代码

    public HttpResponseMessage Get(string id)
    {
        string singleFilePath = String.Format("{0}/../Data/phones/{1}.json", AssemblyDirectory, id);
        List<Phone> phones = new List<Phone>();
        Phone phone = new Phone();
        JsonSerializer serailizer = new JsonSerializer();

        using (StreamReader json = File.OpenText(singleFilePath))
        {
            using (JsonTextReader reader = new JsonTextReader(json))
            {
                //if array do this
                phones = serailizer.Deserialize<List<Phone>>(reader);
                //if object do this
                phone = serailizer.Deserialize<Phone>(reader);
            }
        }

        HttpResponseMessage response = Request.CreateResponse<List<Phone>>(HttpStatusCode.OK, phones);

        return response;
    }

以上可能不是最好的方法。它就是我现在所在的位置。


问题答案:

使用Json.NET,您可以这样做:

string content = File.ReadAllText(path);
var token = JToken.Parse(content);

if (token is JArray)
{
    IEnumerable<Phone> phones = token.ToObject<List<Phone>>();
}
else if (token is JObject)
{
    Phone phone = token.ToObject<Phone>();
}


 类似资料:
  • 问题内容: 有没有办法将Moshi设置为自动创建一个或基于JSON响应?目前,我可以明确地执行此操作。例如,我可以收到以下响应: 要么 我想创建或不必明确指定要使用的那个。 问题答案: 您可以使用JsonQualifier对此进行概括。从您的示例中,您可能会像 这是带有测试的代码,可以更深入地演示。

  • 问题内容: 我将从服务器接收JSON对象或数组,但是我不知道它将是什么。我需要使用JSON,但是要这样做,我需要知道它是对象还是数组。 我正在使用Android。 有没有人有这样做的好方法? 问题答案: 我找到了更好的方法来确定: tokenizer可以返回更多类型:http : //developer.android.com/reference/org/json/JSONTokener.html

  • 问题内容: 我有两个桌子。一个拥有制造商信息,并包括他们可以销售的区域。另一个有他们的产品出售。我们必须根据地区来限制产品的可见性。这就像Netflix的系统中的视频只能在任何地方(1),在加拿大(2),在美国(3)都可以观看。 我正在尝试进行查询,以告诉我可以根据制造商表中的设置在哪里查看产品。 例如,在制造商表中,有两个字段称为Exposure_new和Exposure_used,每个字段的值

  • 本文向大家介绍sitecore 确保值是对还是错,包括了sitecore 确保值是对还是错的使用技巧和注意事项,需要的朋友参考一下 示例 要断言值是true还是false,请执行以下操作: 您还可以为异常消息传递格式化参数            

  • 问题内容: 我需要确定JavaScript中的数组中是否已存在对象。 例如(dummycode): 现在,“carBrands”数组包含所有实例。我现在正在寻找一种快速解决方案,以检查car1,car2,car3或car4的实例是否已经在carBrands数组中。 例如: car1和car4包含相同的数据,但是不同的实例,应测试它们是否相等。 我是否在创建时向对象添加了哈希值?还是有更快的方法来用

  • 确定javascript对象中的所有属性是null还是空字符串的最优雅方法是什么?它应该适用于任意数量的属性。