精华内容
下载资源
问答
  • java 解析 json文件 java 解析 json文件

    热门讨论 2010-03-22 22:37:18
    java 解析 json文件java 解析 json文件java 解析 json文件java 解析 json文件java 解析 json文件
  • 解析JSON文件

    2017-12-13 10:30:48
    本范例是一个Scala工程,结合Java组件实现了对spark产品分析的结果json文件进行解析,将其内部的几何对象转换为记录集写入数据集里,由于Scala读写文件的效率比较高,故采用Scala与Java组件实现。
  • JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。接下来通过本文给大家介绍python解析json文件相关知识,对python解析json文件相关知识感兴趣的朋友一起学习吧
  • 通过Gson解析Json文件

    2015-01-24 19:59:05
    通过Gson解析Json文件,相关博文:http://www.cnblogs.com/tianzhijiexian/p/4246497.html
  • nlohmann 是德国工程师,以其名字为工程名的 nlohmann/json 项目又被成为 JSON for Modern C++。 网上常见如何使用 ...此篇主要向未接触过 JSON 文件的新手介绍如何快速使用 nlohmann 解析 JSON 文件。 工程引用..

    nlohmann 是德国工程师,以其名字为工程名的 nlohmann/json 项目又被成为 JSON for Modern C++
    网上常见如何使用 nlohmann 生成 JSON 文件的中英文资料。但如何使用 nlohmann 解析 JSON 文件的 资料 不多,或者,不够清楚直接。
    其实,工程的 README.md 写得也算清楚。但是对于从未接触过 JSON 文件的新手来说,还是不太友好。此篇主要向未接触过 JSON 文件的新手介绍如何快速使用 nlohmann 解析 JSON 文件。

    工程引用

    nlohmann 使用了 hpp,这种形式被称为 header only。在自己的工程中使用 nlohmann 时,仅需 #include “json.hpp” 即可。在所有 #include 之后,再添加一句 using json = nlohmann::json 会更加便捷。

    简单文件解析

    如果 JSON 文件够简单,如下,

    {
    	"pi":3.1415,
    	"happy":true
    }
    

    包括任何结构体或数组,则解析代码如下:

    #include "json.hpp"
    #include <fstream>
    #include <iostream>
    using namespace std;
    using json = nlohmann::json;
    int main() {
    	json j;			// 创建 json 对象
    	ifstream jfile("test.json");
    	jfile >> j;		// 以文件流形式读取 json 文件
    	float pi = j.at("pi");
    	bool happy = j.at("happy");
    	return 0;
    }

    较复杂的 JSON 文件解析

    一般来说,JSON 文件包含很多的层级,转换成 C++ 则是结构体。以下 json 文件为例:

    {
      "output": {
        "width": 720,
        "height": 1080,
        "frameRate": 20,
        "crf": 31
      },
      "tracks": [
        {
          "name": "t1",
          "pieces": [
            {
              "file": "x.mp4",
              "startTime": 2,
              "endTime": 6
            },
            {
              "file": "y.mp4",
              "startTime": 9,
              "endTime": 13
            }
          ]
        },
        {
          "name": "t2",
          "pieces": [
            {
              "file": "z.mp4",
              "startTime": 0,
              "endTime": 10
            }
          ]
        }
      ]
    }

    这个 json 文件,人脑解析的话,我们可以看到,它包括两大部分 "output" 和 "tracks"。其中,output 可以用结构体来表示,其代码如下:

    struct video_info {
    	int width;
    	int height;
    	int frame_rate;
    	int crf;
    }
    

    另一部分可看作是有两个元素的结构体 "tracks" 的数组,其结构体包括 string 的 name,和另一个结构体 "pieces" 的数组。用 C++ 代码可表示为如下:

    struct pieceinfo {
        string  pathname;
        int     startTime;
        int     endTime;
    };
    struct trackinfo {
        string      name;
        pieceinfo   pieces[10];
        int         size;   // piceces 大小
    };
    

    了解析结构体类内容,需要定义对结构体的解析方法。因此,整个解析过程如下:

    #include "json.hpp"
    #include <iostream>
    #include <fstream>
    
    using namespace std;
    using json = nlohmann::json;
    
    namespace jsonns {
        struct videoinfo {
            int width;
            int height;
            int frameRate;
            int crf;
        };
    
        void from_json(const json& j, videoinfo& v) {
            j.at("width").get_to(v.width);
            j.at("height").get_to(v.height);
            j.at("frameRate").get_to(v.frameRate);
            j.at("crf").get_to(v.crf);
        }
    
        struct pieceinfo {
            string  pathname;
            int     startTime;
            int     endTime;
        };
        
        void from_json(const json&j, pieceinfo &p) {
            j.at("file").get_to(p.pathname);
            j.at("startTime").get_to(p.startTime);
            j.at("endTime").get_to(p.endTime);
        }
    
        struct trackinfo {
            string      name;
            pieceinfo   pieces[10];
            int         size;
        };
    
        void from_json(const json&j, trackinfo &t) {
            j.at("name").get_to(t.name);
            for(int i = 0; i < j["pieces"].size(); i++) {
                t.pieces[i] = j["pieces"][i];
            }
            t.size = j["pieces"].size();
        }
    }
    
    int main()
    {
        json j;
        ifstream jfile("test.json");
        jfile >> j;
        jsonns::videoinfo vi = j.at("output");
        int tilength = j["tracks"].size();
        jsonns::trackinfo ti[tilength];
        for (int i = 0; i < tilength; i++) {
            ti[i] = j["tracks"][i];
        }
        return 0;
    }
    展开全文
  • 最近需要用c#解析json文件,以前没用过这个,百度了一下找到了这篇文章感觉不错,特分享下
  • Python解析Json文件

    千次阅读 2020-03-30 12:25:26
    Python解析Json文件 写在前面   在项目开发中,难免会遇到需要解析别人发过来的Json文件或将自己的输出打包成Json发生给别人,(尤其是做算法,50%-70%的工作量都在数据处理,而数据标注文件大多是Json、XML、txt...

    Python解析Json文件

    写在前面

      在项目开发中,难免会遇到需要解析别人发过来的Json文件或将自己的输出打包成Json发生给别人,(尤其是做算法,50%-70%的工作量都在数据处理,而数据标注文件大多是Json、XML、txt类型),如果你试图直接用记事本或其他编辑器打开Json文件找里面的内容,那恭喜你,你的工作任务将从此刻开始指数级增长,里面密密麻麻都是字符,本文将介绍怎么利用Python解析和打包Json.

    一、解析

    下面是一个Json文件的内容:

    {“path”:“E:\Datasets\YOLO\person\imgs\15.jpg”,“outputs”:{“object”:[{“name”:“face”,“bndbox”:{“xmin”:48,“ymin”:41,“xmax”:74,“ymax”:77}},{“name”:“face”,“bndbox”:{“xmin”:185,“ymin”:16,“xmax”:216,“ymax”:57}},{“name”:“person”,“bndbox”:{“xmin”:15,“ymin”:31,“xmax”:179,“ymax”:366}},{“name”:“person”,“bndbox”:{“xmin”:153,“ymin”:6,“xmax”:298,“ymax”:375}}]},“time_labeled”:1575946134777,“labeled”:true,“size”:{“width”:416,“height”:416,“depth”:3}}

    该文件的内容是图片的路径,以及图片里面有两张人脸,两个人,人脸的位置,人的位置,图片的大小,图片的深度

      仔细观察不难发现,里面就是一些字典的嵌套,知道了这一点,那接下来就好办了
    首先导入处理json需要的类库json

    import json
    

    接下来以文件的形式打开json文件

    f_path = r'H:\Datasets\YOLO\person\outputs\json\15.json'
    with open(f_path) as f
    

    然后用json类库提取全部内容,并打印出来看下

    labels = json.load(f)
    print(labels)
    

    print结果:

    {‘path’: ‘E:\Datasets\YOLO\person\imgs\15.jpg’, ‘outputs’: {‘object’: [{‘name’: ‘face’, ‘bndbox’: {‘xmin’: 48, ‘ymin’: 41, ‘xmax’: 74, ‘ymax’: 77}}, {‘name’: ‘face’, ‘bndbox’: {‘xmin’: 185, ‘ymin’: 16, ‘xmax’: 216, ‘ymax’: 57}}, {‘name’: ‘person’, ‘bndbox’: {‘xmin’: 15, ‘ymin’: 31, ‘xmax’: 179, ‘ymax’: 366}}, {‘name’: ‘person’, ‘bndbox’: {‘xmin’: 153, ‘ymin’: 6, ‘xmax’: 298, ‘ymax’: 375}}]}, ‘time_labeled’: 1575946134777, ‘labeled’: True, ‘size’: {‘width’: 416, ‘height’: 416, ‘depth’: 3}}

    到此,就把整个文件的内容全部加载到label这个字典里了,接下来就用字典的技术遍历这个字典。

    先我们看下这个字典里有哪些键:

    keys = labels.keys()
    # print(labels.keys())
    print(keys)
    
    >dict_keys(['path', 'outputs', 'time_labeled', 'labeled', 'size'])	# print输出
    

    知道这些键以后,就可以根据键查找对应的值。

    # 查看path
    path = labels['path']
    # print(labels['path'])
    print(path)
    
    >E:\Datasets\YOLO\person\imgs\15.jpg				# print输出
    
    # 查看 outputss
    outputs = labels['outputs']
    print(outputs)
    
    >{'object': [{'name': 'face', 'bndbox': {'xmin': 48, 'ymin': 41, 'xmax': 74, 'ymax': 77}}, {'name': 'face', 'bndbox': {'xmin': 185, 'ymin': 16, 'xmax': 216, 'ymax': 57}}, {'name': 'person', 'bndbox': {'xmin': 15, 'ymin': 31, 'xmax': 179, 'ymax': 366}}, {'name': 'person', 'bndbox': {'xmin': 153, 'ymin': 6, 'xmax': 298, 'ymax': 375}}]}
    

    What?这么长一串是什么鬼,看不懂。
    没关系,只要你认出 { 这个玩意儿表示字典就行。既然是字典,那就有键值,就可以查看里面的键

    print(outputs.keys())
    
    >dict_keys(['object'])		# print输出
    

    里面只要一个键‘object’,输出看看

    object = outputs['object']
    print(object)
    
    > [{'name': 'face', 'bndbox': {'xmin': 48, 'ymin': 41, 'xmax': 74, 'ymax': 77}}, 
       {'name': 'face', 'bndbox': {'xmin': 185, 'ymin': 16, 'xmax': 216, 'ymax': 57}}, 
       {'name': 'person', 'bndbox': {'xmin': 15, 'ymin': 31, 'xmax': 179, 'ymax': 366}}, 
       {'name': 'person', 'bndbox': {'xmin': 153, 'ymin': 6, 'xmax': 298, 'ymax': 375}}
      ]
    

    貌似有点头绪了,里面是个列表,列表里面有四个元素(也就是那四个字典),分别是两个人脸和两个人。列表就可以用循环遍历了,字典继续用键取值。试试

    for obj in object:
        print('{0}  box({1}, {2}, {3}, {4})'.format(obj['name'], obj['bndbox']['xmin'], 
              obj['bndbox']['ymin'], obj['bndbox']['xmax'], obj['bndbox']['ymax']))
    
    > face  box(48, 41, 74, 77)
      face  box(185, 16, 216, 57)
      person  box(15, 31, 179, 366)
      person  box(153, 6, 298, 375)
    

    到此,怎么解析json文件就算是结束了,自己动手试试吧
    把上面的文件内容复制到记事本里面,保存为 “文件名.json”,然后把文件的路径复制到代码里的f_path的地方,运行代码看看吧

    附:解析代码
    import json
    f_path = r'H:\Datasets\YOLO\person\outputs\json\15.json'
    with open(f_path) as f:
        labels = json.load(f)
        keys = labels.keys()
        print(labels.keys())
        
        path = labels['path']
        print(path)
    
        size = labels['size']
        print(size)
    
        width = size['width']
        print(width)
    
        outputs = labels['outputs']
        print(outputs.keys())
        
        object = outputs['object']
        print(object)
        for obj in object:
            print('{0}  box({1}, {2}, {3}, {4})'.format(obj['name'], obj['bndbox']['xmin'],
                    obj['bndbox']['ymin'], obj['bndbox']['xmax'], obj['bndbox']['ymax']))
    
    展开全文
  • 读json 读取并解析JSON文件。 安装 $ npm install read-json 用法 readJSON ( './package.json' , function ( error , manifest ) { manifest . name // => 'read-json' } )
  • 【C++】使用 nlohmann 解析 json 文件

    千次阅读 2020-07-26 17:12:28
    nlohmann 是德国工程师,以其名字为工程名的 nlohmann/json 项目又被成为 JSON for Modern C++。 网上常见如何使用 ...此篇主要向未接触过 JSON 文件的新手介绍如何快速使用 nlohmann 解析 JSON 文件。 工程引.

    nlohmann 是德国工程师,以其名字为工程名的 nlohmann/json 项目又被成为 JSON for Modern C++。
    网上常见如何使用 nlohmann 生成 JSON 文件的中英文资料。但如何使用 nlohmann 解析 JSON 文件的 资料 不多,或者,不够清楚直接。
    其实,工程的 README.md 写得也算清楚。但是对于从未接触过 JSON 文件的新手来说,还是不太友好。此篇主要向未接触过 JSON 文件的新手介绍如何快速使用 nlohmann 解析 JSON 文件。

    工程引用

    nlohmann 使用了 hpp,这种形式被称为 header only。在自己的工程中使用 nlohmann 时,仅需 #include “json.hpp” 即可。在所有 #include 之后,再添加一句 using json = nlohmann::json 会更加便捷。

    简单文件解析

    如果 JSON 文件够简单,如下,

    {
    	"pi":3.1415,
    	"happy":true
    }
    

    不包括任何结构体或数组,则解析代码如下:

    #include "json.hpp"
    #include <fstream>
    #include <iostream>
    using namespace std;
    using json = nlohmann::json;
    int main() {
    	json j;			// 创建 json 对象
    	ifstream jfile("test.json");
    	jfile >> j;		// 以文件流形式读取 json 文件
    	float pi = j.at("pi");
    	bool happy = j.at("happy");
    	return 0;
    }
    

    较复杂的 JSON 文件解析

    一般来说,JSON 文件包含很多的层级,转换成 C++ 则是结构体。以下 json 文件为例:

    {
      "output": {
        "width": 720,
        "height": 1080,
        "frameRate": 20,
        "crf": 31
      },
      "tracks": [
        {
          "name": "t1",
          "pieces": [
            {
              "file": "x.mp4",
              "startTime": 2,
              "endTime": 6
            },
            {
              "file": "y.mp4",
              "startTime": 9,
              "endTime": 13
            }
          ]
        },
        {
          "name": "t2",
          "pieces": [
            {
              "file": "z.mp4",
              "startTime": 0,
              "endTime": 10
            }
          ]
        }
      ]
    }
    

    从这个 json 文件,人脑解析的话,我们可以看到,它包括两大部分 "output""tracks"。其中,output 可以用结构体来表示,其代码如下:

    struct video_info {
    	int width;
    	int height;
    	int frame_rate;
    	int crf;
    }
    

    而另一部分可看作是有两个元素的结构体 "tracks" 的数组,其结构体包括 stringname,和另一个结构体 "pieces" 的数组。用 C++ 代码可表示为如下:

        struct pieceinfo {
            string  pathname;
            int     startTime;
            int     endTime;
        };
        struct trackinfo {
            string      name;
            pieceinfo   pieces[10];
            int         size;   // piceces 大小
        };
    

    为了解析结构体类内容,需要定义对结构体的解析方法。因此,整个解析过程如下:

    #include "json.hpp"
    #include <iostream>
    #include <fstream>
    
    using namespace std;
    using json = nlohmann::json;
    
    namespace jsonns {
        struct videoinfo {
            int width;
            int height;
            int frameRate;
            int crf;
        };
    
        void from_json(const json& j, videoinfo& v) {
            j.at("width").get_to(v.width);
            j.at("height").get_to(v.height);
            j.at("frameRate").get_to(v.frameRate);
            j.at("crf").get_to(v.crf);
        }
    
        struct pieceinfo {
            string  pathname;
            int     startTime;
            int     endTime;
        };
        
        void from_json(const json&j, pieceinfo &p) {
            j.at("file").get_to(p.pathname);
            j.at("startTime").get_to(p.startTime);
            j.at("endTime").get_to(p.endTime);
        }
    
        struct trackinfo {
            string      name;
            pieceinfo   pieces[10];
            int         size;
        };
    
        void from_json(const json&j, trackinfo &t) {
            j.at("name").get_to(t.name);
            for(int i = 0; i < j["pieces"].size(); i++) {
                t.pieces[i] = j["pieces"][i];
            }
            t.size = j["pieces"].size();
        }
    }
    
    int main()
    {
        json j;
        ifstream jfile("test.json");
        jfile >> j;
        jsonns::videoinfo vi = j.at("output");
        int tilength = j["tracks"].size();
        jsonns::trackinfo ti[tilength];
        for (int i = 0; i < tilength; i++) {
            ti[i] = j["tracks"][i];
        }
        return 0;
    }
    
    展开全文
  • Java解析JSON文件的方法(一)

    万次阅读 2021-08-19 09:22:17
    Java解析JSON文件的方法(一) 一、首先需要在Eclipse工程中导入相关的jar包,jar包参见链接:http://yunpan.alibaba-inc.com/share/link/NdA5b6IFK 二、 提供一份待解析的json文件,apkinfo.json如下: [ { “name...

    Java解析JSON文件的方法(一)

    一、首先需要在Eclipse工程中导入相关的jar包,jar包参见链接:http://yunpan.alibaba-inc.com/share/link/NdA5b6IFK

    二、 提供一份待解析的json文件,apkinfo.json如下:
    [
    {
    “name”:“帐号”,
    “package_name”:“com.android.account”,
    “check_version”:“1.2”
    },
    {
    “name”:“系统升级”,
    “package_name”:“com.android.osupdate”,
    “check_version”:“1.0”
    },
    ]
    三、 Java代码由两个类组成,一个是读取文件内容的Util类,还有一个是主程序Test类。
    (1) Util.java:
    import java.io.BufferedReader;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;

    public class Util {

    public String ReadFile(String Path){
    BufferedReader reader = null;
    String laststr = “”;
    try{
    FileInputStream fileInputStream = new FileInputStream(Path);
    InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, “UTF-8”);
    reader = new BufferedReader(inputStreamReader);
    String tempString = null;
    while((tempString = reader.readLine()) != null){
    laststr += tempString;
    }
    reader.close();
    }catch(IOException e){
    e.printStackTrace();
    }finally{
    if(reader != null){
    try {
    reader.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    return laststr;
    }

    }
    (2) Test.java:
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;

    import net.sf.json.JSONArray;
    import net.sf.json.JSONObject;

    public class Test {

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    String JsonContext = new Util().ReadFile(“D:\test\apkinfo.json”);
    JSONArray jsonArray = JSONArray.fromObject(JsonContext);
    int size = jsonArray.size();
    System.out.println(“Size: " + size);
    for(int i = 0; i < size; i++){
    JSONObject jsonObject = jsonArray.getJSONObject(i);
    System.out.println(”[" + i + “]name=” + jsonObject.get(“name”));
    System.out.println("[" + i + “]package_name=” + jsonObject.get(“package_name”));
    System.out.println("[" + i + “]check_version=” + jsonObject.get(“check_version”));
    }
    }

    }
    四、执行后的结果如下:
    Size: 2
    [0]name=帐号
    [0]package_name=com.android.account
    [0]check_version=1.2
    [1]name=系统升级
    [1]package_name=com.android.osupdate
    [1]check_version=1.0

    展开全文
  • load-json-file - 读取和解析JSON文件
  • vs2013 c++ 使用jsoncpp解析json文件,其中包含了json库,还有能够直接运行的json库使用的例子,是初学者学习json的资源
  • java解析json文件Jar包

    2015-12-11 15:54:18
    包含java解析json文件所必要的7个Jar包,解压后引入Java工程即可进行编程
  • C# 解析Json文件(使用NewtonJson库)

    千次阅读 2019-12-18 11:11:49
    C#中解析json文件有很多种方法,在多种方法中一般都会提到一个十分优秀的库:NewtonJson。使用NewtonJson处理Json文件十分高效,而且在配置也十分简单,直接在Nuget包中导入即可。 目录 1.导入NewtonJson库 2....
  • 利用python解析json文件

    千次阅读 2020-07-17 10:21:31
    文章目录一、json介绍二、用python解析json文件 一、json介绍 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它使得人们很容易的进行阅读和编写,同时也方便了机器进行解析和生成。它是基于...
  • 读取json文件 使用回调异步读取和解析 JSON 文件。 用法 var readJson = require ( 'read-json-file' ) ; readJSON ( pathToYourJson , function ( error , data ) { if ( error ) { throw error ; } console ....
  • json解析异步 一个基于 Promise 的接口,用于异步解析 JSON 文件
  • 使用json.org.jar包,解析json文件,比较简洁明了,该资源是一个android小DEMO
  • Java解析JSON文件的方法

    千次阅读 2017-02-24 19:30:14
    Java解析JSON文件的方法
  • 然后json文件在线解析,把内容复制粘贴进去解析得出下面的内容(右边框内) json文件的地址url="http://www.lagou.com/lbs/getAllCitySearchLabels.json" 用python来解析 并提取出其中的城市名 代码...
  • Qt多级解析Json文件

    千次阅读 2016-08-17 15:17:01
    Qt多级解析Json文件Json文件范本我要从下面的文件中解析Cmd1中的Name中的值{ "CommandFamily": { "Name": "自定义指令集", "Cmd1": { "Name": "07", "Value": "hello world" }, "Cmd2":
  • 上一篇golang读取json配置文件介绍了使用encoding/json包来解析json文件,但是这种方法在面对结构复杂、字段较多的情况时,解析效率不是很高。上一篇中,我们在解析json文件时,需要提前在代码中定义好解析后对应的...
  • 在今天的文章中,我们将详述如何使用 Logstash 来解析 JSON 文件的日志,并把它导入到 Elasticsearch 中。在之前的文章 “Logstash:Data转换,分析,提取,丰富及核心操作” 也有提到过,但是没有具体的例子。总体...
  • JSON库解析json文件

    千次阅读 2012-10-10 18:15:34
    想要使用JSONKit库来解析json文件,只需要下载JSONKit.h 和JSONKit.m添加到工程中(下载链接);然后加入libz.dylib即可 解析代码举例: #import "JSONKit.h" //假设 strJson 是网络上接收到的 json 字符串, ...
  • Python递归解析Json文件

    2017-12-12 15:52:10
    使用Python递归解析从TCGA下载的metadata.cart.json文件
  • java解析json文件(文件大小50M),需要计算json文件中第一层的记录数大小。如json文件: [{"name":"帐号","package_name":"com.android.account","check_version":"1.2"}, {"name":"系统升级","package_name":...
  • 使用pyspark解析json文件,并将统计结果写入InfluxDB中
  • 解析json文件,从json文件中提取信息

    千次阅读 2018-12-13 14:37:30
    使用labelme标注工具标注生成的文件为json文件,要使用标注结果,需要提取标注结果中的坐标信息,并将结果生成label。 代码如下: import numpy as np import os import json import io import PIL.Image def ...
  • 此资源采用腾讯RapidJson于vs2017C++环境解析Json文件,下载即可用,RapidJson比较其他JSON解析库更加简单轻便,运行于其他环境的话自己将代码拷贝出去,自行建立新的工程项目即可。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 281,470
精华内容 112,588
关键字:

如何解析json文件