文档章节

C#获取动态key的json对象的值

冬天之雪
 冬天之雪
发布于 2016/10/20 15:58
字数 410
阅读 722
收藏 1

C#获取动态key的json对象的值

问题描述

如果直接获取某个json数组中的元素将得到如下的json

{
    "44": {
        "height": 25,
        "appeared": -70000000,
        "length": 44,
        "order": "saurischia",
        "vanished": -70000000,
        "weight": 135000
    }
}

这个json对象如果使用C#类来反序列化,那么实体类的结构如下,实体类的类名需要与json对象key相同的才可以使用json反序列化,这样对程序造成了极大的不便。

public class 44
{
    public int height { get; set; }
    public int appeared { get; set; }
    public int length { get; set; }
    public string order { get; set; }
    public int vanished { get; set; }
    public int weight { get; set; }
}

public class Root
{
    public 44 44 { get; set; }
}

解决方案

以上json对象由于key是动态的无法使用C#反序列化,但是直接取到value就能序列化了,如下。

{
    "height":25,
    "appeared":-70000000,
    "length":44,
    "order":"saurischia",
    "vanished":-70000000,
    "weight":135000
}

以上json对象就可以使用我们常用的格式转换了。

public class Root
{
    public int height { get; set; }
    public int appeared { get; set; }
    public int length { get; set; }
    public string order { get; set; }
    public int vanished { get; set; }
    public int weight { get; set; }
}

实现代码

从动态key的json对象里面拿到value那部分,可以反序列化的字符串,请使用如下的函数,注意引入类库。

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System.Linq;
/// <summary>
/// 本类用于处理动态Key的json对象
/// </summary>
/// <param name="jObject">需要处理的json对象</param>
/// <returns>json对象的第一个元素的values</returns>
public static string GetJsonValue(string strJson)
{
    string strResult;
    JObject jo = JObject.Parse(strJson);
    string[] values = jo.Properties().Select(item => item.Value.ToString()).ToArray();
    if (values == null)
    {
        strResult = "";
    }
    else
    {
        strResult = values[0];
    }
    return strResult;
}

© 著作权归作者所有

冬天之雪

冬天之雪

粉丝 32
博文 46
码字总数 3661
作品 0
石家庄
高级程序员
私信 提问
while/Scorpio-CSharp

Scorpio-CSharp author : while QQ群 : 245199668 加群 VSCode 基础语法提示插件 https://marketplace.visualstudio.com/items?itemName=while.scorpio 或者 VSCode 直接搜索 scorpio 脚本教......

while
2016/01/18
0
0
MySQL5.7 JSON实现简介

版权声明:本文由吴双桥原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/205 来源:腾云阁 https://www.qcloud.com/community 本文主要介绍在MySQL 5.7...

偶素浅小浅
2016/11/11
80
0
oracle mysql5.7 Json函数

oracle mysql 5.7.8 之后增加了对json数据格式的函数处理,可更加灵活的在数据库中操作json数据,如可变属性、自定义表单等等都使用使用该方式解决。 在创建表时,可以使用“GENERATED ALWAY...

兜兜毛毛
2018/12/24
44
0
C#进阶系列——WebApi 接口参数不再困惑:传参详解

原文:C#进阶系列——WebApi 接口参数不再困惑:传参详解 前言:还记得刚使用WebApi那会儿,被它的传参机制折腾了好久,查阅了半天资料。如今,使用WebApi也有段时间了,今天就记录下API接口传...

杰克.陈
2017/12/19
0
0
一种基于第三方 JSON 包的替换解决方案

JSON(JavaScript Object Notation) 作为一种轻量级的数据交换格式在项目中得到了广泛的应用,第三方的 JSON 开发工具包也就受到了广大开发人员的青睐,org.json 包便是其中之一,但是由于 or...

IBMdW
2012/03/30
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Boot 2 实战:使用 Spring Boot Admin 监控你的应用

1. 前言 生产上对 Web 应用 的监控是十分必要的。我们可以近乎实时来对应用的健康、性能等其他指标进行监控来及时应对一些突发情况。避免一些故障的发生。对于 Spring Boot 应用来说我们可以...

码农小胖哥
27分钟前
3
0
ZetCode 教程翻译计划正式启动 | ApacheCN

原文:ZetCode 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 学习资源 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 ...

ApacheCN_飞龙
37分钟前
3
0
CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
46分钟前
6
0
从零基础到拿到网易Java实习offer,我做对了哪些事

作为一个非科班小白,我在读研期间基本是自学Java,从一开始几乎零基础,只有一点点数据结构和Java方面的基础,到最终获得网易游戏的Java实习offer,我大概用了半年左右的时间。本文将会讲到...

Java技术江湖
昨天
5
0
程序性能checklist

程序性能checklist

Moks角木
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部