当前位置: 移动技术网 > IT编程>开发语言>Java > 复杂类型json如何转化

复杂类型json如何转化

2020年04月14日  | 移动技术网IT编程  | 我要评论
关于json简单的开发场景大家都会用,但是如果涉及到复杂类型的json转化如何操作呢? 之前在开发的业务场景中遇到需要在代码块中对如下形式的数据进行处理 [ { "id": "9", "attachments": { "key1": { "download_url": "7955ca8e97dc21 ...

  关于json简单的开发场景大家都会用,但是如果涉及到复杂类型的json转化如何操作呢?

之前在开发的业务场景中遇到需要在代码块中对如下形式的数据进行处理

[
  {
    "id": "9",
    "attachments": {
      "key1": {
        "download_url": "7955ca8e97dc219f9dda0b8102540247f48675ca",
        "filename": "logo.png"
      }
    }
  },
  {
    "id": "10",
    "attachments": {
      "key2": {
        "download_url": "7955ca8e97dc219f9dda0b8102540247f48675ca",
        "filename": "logo2.png"
      }
    }
  },
  {
    "id": "13",
    "attachments": []
  }
]

很容易看出来,以上的数据是个数组类型。他的 attachments元素看起来就很奇怪了,看形式应该是个map,但是接收的时候我将 attachments 定义成object元素接收过来,排除空的情况,剩下的的使用map的类型接收 我将他书写成

我先定义了一个对象,如下:

public class fileeo{
    private string download_url;
    private string filename;
}

然后书写定义map   hashmap<string,fileeo> 但是在直接作为对象转化的时候转化不成功,一直报错,经过一番查找发现

json对于复杂类型的转化需要先定义type,解决方案如下:

     /**
     * 复杂类型的json转化需要先定义type 然后再进行转化
     */
    public static type definetype() {
        return new typereference<map<string, object>>() {
        }.gettype();
    }

    public static void main(string[] args) {
        /* 这里简单写一个demo书写使用形式 在工作中偶然遇到了这种形式的 实际情况比这种更复杂一点
        map中是一个对象,用普通的封装之后去解析会报错*/
        string str = " {\"money\":\"100.00\",\"paymethod\":\"alipay\"}";
        type type = definetype();
        map<string, object> map = json.parseobject(str, type);
        system.out.println(map.get("money"));
        system.out.println(map.get("paymethod"));
    }

之前没有了解过复杂类型的json转化,这里遇到了,标记一下。

 

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网