精华内容
下载资源
问答
  • parson 这个 json 解析库的简单封装 操作系统支持: Windows
  • Jni json处理 parson的使用 构造json extern "C" JNIEXPORT jstring JNICALL Java_com_dds_parson_Parson_test( JNIEnv *env, jclass clazz) { char *serialized_string = 0; // 包装一段jsonObject ...

    Jni json处理 parson的使用

    构造json

    extern "C" JNIEXPORT jstring JNICALL
    Java_com_dds_parson_Parson_test(
            JNIEnv *env,
            jclass clazz) {
        char *serialized_string = 0;
        // 包装一段jsonObject
        JSON_Value *root_value = json_value_init_object();
        
        // 设置简单参数
        json_object_set_string(json_object(root_value), "name", "大大帅");
        json_object_set_number(json_object(root_value), "age", 27);
        json_object_set_string(json_object(root_value), "occupation", "Programmer");
        
        // 设置内联参数
        json_object_dotset_string(json_object(root_value), "address.city", "Cupertino");
        
        // 设置数组
        json_object_dotset_value(json_object(root_value), "sub.habbit",
                                 json_parse_string(R"(["dsdssd","dsdsd","sdsdsd"])"));
        json_object_dotset_value(json_object(root_value), "contact.emails",
                                 json_parse_string(R"(["email@example.com","email2@example.com"])"));
    
        // 导入object
        JSON_Value *pJsonSub = json_value_init_object();
        json_object_set_value(json_object(root_value), "address", pJsonSub);
        json_object_set_string(json_object(pJsonSub), "dds", "ddssingsong");
    
        // 导入array
        pJsonSub = json_value_init_array();
        json_object_set_value(json_object(root_value), "links", pJsonSub);
    
        JSON_Value *pJsonSubSub = json_value_init_object();
        json_array_append_value(json_array(pJsonSub), pJsonSubSub);
        json_object_set_string(json_object(pJsonSubSub), "dds", "ddssingsong");
        json_object_set_string(json_object(pJsonSubSub), "address", "https://baidu.com");
        pJsonSubSub = json_value_init_object();
        json_object_set_string(json_object(pJsonSubSub), "dds", "ddssingsong");
        json_object_set_string(json_object(pJsonSubSub), "address", "https://baidu.com");
    
        serialized_string = json_serialize_to_string_pretty(root_value);
        json_value_free(root_value);
    
        return env->NewStringUTF(serialized_string);
    }
    
    

    需要解析的对象

    public class User {
    
        private String name;
        private String occu;
        private ArrayList<String> habbits;
    
        public User() {
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getOccu() {
            return occu;
        }
    
        public void setOccu(String occu) {
            this.occu = occu;
        }
    
        public List<String> getHabbits() {
            return habbits;
        }
    
        public void setHabbits(ArrayList<String> habbits) {
            this.habbits = habbits;
        }
    
    
    }
    
    

    解析json

    extern "C"
    JNIEXPORT jobject JNICALL
    Java_com_dds_parson_Parson_parseJson(JNIEnv *env, jclass clazz, jstring json) {
        JSON_Value *root_value;
        char g_log_info[200];
        // 解析传入的json
        const char *cJson = env->GetStringUTFChars(json, JNI_FALSE);
        root_value = json_parse_string(cJson);
    
        // 获取根类型 object/array
        JSON_Value_Type jsonValueType = json_value_get_type(root_value);
    
        if (jsonValueType == JSONObject) {
            JSON_Object *jsonObject = json_value_get_object(root_value);
    
            // 获取其中一个参数
            const char *name = json_object_get_string(jsonObject, "name");
            sprintf(g_log_info, "%s", name);
            LOGD("name : %s", g_log_info);
    
            // 获取其中一个参数
            const char *occu = json_object_get_string(jsonObject, "occupation");
            sprintf(g_log_info, "%s", occu);
            LOGD("occupation : %s", g_log_info);
    
            // 反射类
            jclass userClass = env->FindClass("com/dds/parson/User");
            //反射构造方法
            jmethodID constructMethod = env->GetMethodID(userClass, "<init>", "()V");
    
            if (userClass == NULL || constructMethod == NULL) {
                return NULL;
            }
            // 构造对象
            jobject user = env->NewObject(userClass, constructMethod);
            // 设置参数
            jmethodID setName = env->GetMethodID(userClass, "setName", "(Ljava/lang/String;)V");
            jmethodID setOccu = env->GetMethodID(userClass, "setOccu", "(Ljava/lang/String;)V");
            jstring jName = env->NewStringUTF(name);
            env->CallVoidMethod(user, setName, jName);
            jstring jOccu = env->NewStringUTF(occu);
            env->CallVoidMethod(user, setOccu, jOccu);
    
    
            jmethodID setHabbit = env->GetMethodID(userClass, "setHabbits", "(Ljava/util/ArrayList;)V");
            if (setHabbit == NULL) {
                LOGD("setHabbit method is NULL");
                return NULL;
            }
            jclass listClass = env->FindClass("java/util/ArrayList");
            jmethodID list_init = env->GetMethodID(listClass, "<init>", "(I)V");
            jobject listObject = env->NewObject(listClass, list_init,4);
            jmethodID list_add = env->GetMethodID(listClass, "add",
                                                  "(Ljava/lang/Object;)Z");
            if (listClass == NULL || list_init == NULL) {
                LOGD("listClass is NULL");
                return NULL;
            }
            if (list_add == NULL) {
                LOGD("add method is NULL");
                return NULL;
            }
    
            // 获取array并打印长度
            JSON_Array *habbits = json_object_dotget_array(jsonObject, "sub.habbit");
            size_t size = json_array_get_count(habbits);
            LOGD("size %d", (int) size);
    
            size_t a = 0;
            for (a = 0; a < size; a++) {
                const char *ha = json_array_get_string(habbits, a);
                sprintf(g_log_info, "%s", ha);
                LOGD("habbit %d: %s", a, g_log_info);
                jstring haa = env->NewStringUTF(ha);
    
                bool flag = env->CallBooleanMethod(listObject, list_add, haa);
                LOGD("flag:%d", flag);
            }
            env->CallVoidMethod(user, setHabbit, listObject);
    
            json_value_free(root_value);
            return user;
    
        }
        return NULL;
    
    
    }
    
    
    
    展开全文
  • 轻量级json库parson.zip

    2019-07-16 04:04:33
    用c写的轻量级json库: JOSN完全支持 轻量级,只需两个文件。 API简单。 用点分的方式(a.b.c)获取和设置key的value。 C89兼容 测试组件 标签:parson
  • parson:用C编写的轻量级JSON库
  • c语言JSON库 Parson的编译和使用

    千次阅读 2019-08-19 20:21:34
    c语言JSON库 Parson的编译和使用 最近一直学习ndk,Android肯定会用到json,这里介绍一个c语言写成的JSON解析库 Parson介绍 Parson is a lighweight json library written in C. c语言中使用的一个轻量级的json库 ...

    c语言JSON库 Parson的编译和使用

    最近一直学习ndk,Android肯定会用到json,这里介绍一个c语言写成的JSON解析库

    Parson介绍

    Parson is a lighweight json library written in C.

    c语言中使用的一个轻量级的json库

    特点:

    • Full JSON support
    • Lightweight (only 2 files)
    • Simple API
    • Addressing json values with dot notation (similar to C structs or objects in most OO languages, e.g. “objectA.objectB.value”)
    • C89 compatible
    • Test suites

    地址: https://github.com/kgabis/parson.git

    简单使用

    1. 构造json

      void serialization_example(void) {
          JSON_Value *root_value = json_value_init_object();
          JSON_Object *root_object = json_value_get_object(root_value);
          
          char *serialized_string = NULL;
          json_object_set_string(root_object, "name", "John Smith");
          json_object_set_number(root_object, "age", 25);
          json_object_dotset_string(root_object, "address.city", "Cupertino");
          json_object_dotset_value(root_object, "contact.emails", json_parse_string("[\"email@example.com\",\"email2@example.com\"]"));
          
          serialized_string = json_serialize_to_string_pretty(root_value);
          puts(serialized_string);
          
          json_free_serialized_string(serialized_string);
          json_value_free(root_value);
      }
      

      输出内容:

      {
          "name": "John Smith",
          "age": 25,
          "address": {
              "city": "Cupertino"
          },
          "contact": {
              "emails": [
                  "email@example.com",
                  "email2@example.com"
              ]
          }
      }
      

    代码收录

    https://github.com/ddssingsong/AnyNdk

    展开全文
  • 帕森(Parson)语法不会将您束缚于Python。 即使使用组合器在运行时构建整个语法,也可以对其进行分析和编译。 (与一个无法计算的单子库进行对比。) 语义动作以一种无意义的方式获取和返回值。 您可以将具体...
  • parson例说

    千次阅读 2017-04-17 16:22:20
    #include "parson.h" #include #include void test_write(void); void test_read(void); int main() { test_write(); test_read(); char * p = json_serialize_to_string_pretty(json_parse_file("test.json...

    例说

    以JSON中国网站的例子,测试代码



    #include "parson.h"
    #include <stdio.h>
    #include <stdlib.h>
    
    void test_write(void);
    void test_read(void);
    
    int main()
    {
        test_write();
        test_read();
        char * p = json_serialize_to_string_pretty(json_parse_file("test.json"));
        printf("%s\n", p);
        free(p);
        return 0;
    }
    
    void test_write(void)
    {
        JSON_Value *pJsonRoot = json_value_init_object();
        json_object_set_string(json_object(pJsonRoot), "name", "JSON中国");
        json_object_set_string(json_object(pJsonRoot), "url", "http://www.json.org.cn");
        json_object_set_number(json_object(pJsonRoot), "page", 88);
        json_object_set_boolean(json_object(pJsonRoot), "isNonProfit", 1);
        JSON_Value *pJsonSub = json_value_init_object();
        json_object_set_value(json_object(pJsonRoot), "address", pJsonSub);
        json_object_set_string(json_object(pJsonSub), "street", "浙大路38号.");
        json_object_set_string(json_object(pJsonSub), "city", "浙江杭州");
        json_object_set_string(json_object(pJsonSub), "country", "中国");
        pJsonSub = json_value_init_array();
        json_object_set_value(json_object(pJsonRoot), "links", pJsonSub);
        JSON_Value *pJsonSubSub = json_value_init_object();
        json_array_append_value(json_array(pJsonSub), pJsonSubSub);
        json_object_set_string(json_object(pJsonSubSub), "name", "Google");
        json_object_set_string(json_object(pJsonSubSub), "url", "http://www.google.com");
        pJsonSubSub = json_value_init_object();
        json_array_append_value(json_array(pJsonSub), pJsonSubSub);
        json_object_set_string(json_object(pJsonSubSub), "name", "Baidu");
        json_object_set_string(json_object(pJsonSubSub), "url", "http://www.baidu.com");
        pJsonSubSub = json_value_init_object();
        json_array_append_value(json_array(pJsonSub), pJsonSubSub);
        json_object_set_string(json_object(pJsonSubSub), "name", "SoSo");
        json_object_set_string(json_object(pJsonSubSub), "url", "http://www.SoSo.com");
        json_serialize_to_file_pretty(pJsonRoot, "test.json");
        json_value_free(pJsonRoot);
    }
    
    void test_read(void)
    {
        int i;
        JSON_Value *schema = json_parse_string("{\"name\":\"\"}");
        JSON_Value *pJsonRoot = json_parse_file("test.json");
        printf("name:%s\n", json_object_get_string(json_object(pJsonRoot), "name"));
        printf("url:%s\n", json_object_get_string(json_object(pJsonRoot), "url"));
        printf("page:%g\n", json_object_get_number(json_object(pJsonRoot), "page"));
        printf("isNonProfit:%s\n", (json_object_get_number(json_object(pJsonRoot), "page") != 0) ? "true":"false");
        printf("address->street:%s\n", json_object_get_string(json_object_get_object(json_object(pJsonRoot), "address"), "street"));
        printf("address->city:%s\n", json_object_get_string(json_object_get_object(json_object(pJsonRoot), "address"), "city"));
        printf("address->country:%s\n", json_object_get_string(json_object_get_object(json_object(pJsonRoot), "address"), "country"));
        for (i = 0; i < json_array_get_count(json_array(json_object_get_value(json_object(pJsonRoot), "links"))); i++)
        {
            printf("links->[%d]->name:%s\n", i, json_object_get_string(json_array_get_object(json_array(json_object_get_value(json_object(pJsonRoot), "links")), i), "name"));
            printf("links->[%d]->url:%s\n", i, json_object_get_string(json_array_get_object(json_array(json_object_get_value(json_object(pJsonRoot), "links")), i), "url"));
        }
        json_value_free(schema);
        json_value_free(pJsonRoot);
    }
    

    展开全文
  • matlab重采样代码牧师-2012-aaai 我论文中用于实证实验的 MATLAB 代码: 奥利弗·帕森、悉达多·高什、马克·威尔、亚历克斯·罗杰斯。 使用通用电器类型的先前模型进行非侵入式负载监控。 在:第 ...
  • 帕森斯 MFA DT 训练营网络课程 这些是我在 2014 年夏季为课程的新生开设的为期 3 周的强化训练营网络课程的笔记(有时还有幻灯片)。 本课程根据获得许可。 随意分叉和拉动! 目录 ... ... :盒子模型和 CSS 大小调整和...
  • About Parson是一个用C语言编写的轻量级json库。功能完全支持JSON轻量级(仅2个文件)简单API用点表示法寻址json值(类似于大多数OO la中的C结构或对象)About Parson是一个用C语言编写的轻量级json库。功能全面支持...
  • Parson类(父类) package com.yh.reflex; public class Parson { /** * <pre>Parson名字(公开的成员变量)</pre> */ public String name; /** * <pre>Parson年龄(私有的成员变量)</pre...
  • 理解构造函数

    2020-03-18 07:19:13
    构造函数也是一个普通函数,创建方式和普通函数一样,但构造函数通常习惯首字母大写。 构造函数和普通函数的区别在于:调用方式不一样,作用... 构造函数的函数名和类名相同:Parson()这个构造函数,Parson即是函数...
  • 如何自动生成Makefile

    2014-09-28 14:54:02
    四:自动生成makefile 4.1 以helloworld.c为源文件 root@parson-desktop:/home/parson/tmp/automk# ls ...4.2.使用Autoscan工具生成configure.ac文件 ...root@parson-desktop:/home/parson/tmp/automk# autoscan
  • 自动生成makefile文件

    2014-02-24 13:48:16
    root@parson-desktop:/home/parson/tmp/automk# ls hellolinux.c 2.使用Autoscan工具生成configure.ac文件 root@parson-desktop:/home/parson/tmp/automk# autoscan 程序“autoscan”尚未安装。 您可以
  • (第二部分:庞大的makefile是怎么生成的 ) 四:自动生成makefile ...root@parson-desktop:/home/parson/tmp/automk# ls hellolinux.c 4.2.使用Autoscan工具生成configure.ac文件 root@parson-desktop:/ho...
  • SI 649:信息可视化,第001节,2018年冬季第3组:威尔逊·帕森(Wilson Parson),克里斯汀·麦加里(Kristen Mcgarry)和Thanhthu(Tammy)阮 | 这是密歇根大学信息学院的SI 649:信息可视化的小组项目。 该项目...
  • java 反射 反射十分强大,可以调用知道任何类,方法,属性,反射是框架的灵魂...Parson ps=new Parson(); Class<?> cl= ps.getClass(); Class.forName("包名.类名") Class<?> forName = Class.forName...
  • Linux 解析配置+ 多线程+互斥源码目录结构源码main.cssh.cssh.hconf.jsonMakefile执行结构查看线程查看...│ ├── parson.h │ └── ssh.h ├── Makefile └── src ├── main.c ├── parson.c └── s...
  • 十三.覆写

    2021-03-18 14:00:15
    方法覆写 腹泻 = 重写(override) public class Parson{ public void show(){ System.out.println(""); } }
  • udacity-proj-2-源码

    2021-07-07 12:10:39
    这是 Paul Parson 为 Udacity 前端 Web 开发人员纳米学位项目提供的交互式简历。 我添加了自定义 HTML/CSS/JS 来创建画布导航,并完全重新设计了简历本身的外观。此外,我为一些导航元素和联系人添加了图标字体。 ...
  • 贾斯珀·帕森(Jasper Parson) 埃里克·李 我们的项目目标 我们的项目目标是为NBA球队创建ELO系统,并建立一个模型来预测球队之间的比赛得分,从而预测哪个球队会获胜。 该模型将使用NBA历史数据和创建的ELO系统...
  • I am having trouble with parson the JSON from a URL. Below, is the code.import java.io.BufferedReader;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import j...
  • 观察 递归对象观察器 这有助于并报告对象可能发生的任何...parson = { name : "Tom" , age : 18 } new Observe ( person , function ( changes , original ) { console . log ( changes ) ; } ) person . name = "Be
  • parson  的完整封装。 1、封装全指针操作,因为 json 中会经常出现 ANSI 无法表示的字符,而且绝大部分网页返回的数据都是 UTF-8,而 json 又极其普遍地应用在网络传输中。 2、不支持不带引号的 key,例如: {data:...
  • JSON library in C

    2020-06-11 15:47:24
    git clone https://github.com/kgabis/parson.git Examples: void print_commits_info(const char *username, const char *repo) { JSON_Value *root_value; JSON_Array *commits; JSON_Object *commit; ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 450
精华内容 180
关键字:

parson