java json linux_linux Json示例demo

目的:

java app Tcp客户端发送数据给Linux C 服务器数据解析

sudo cp tar xvf json-c-0.9.tar.gz /usr/local

cd /usr/local

sudo tar -xvf tar xvf json-c-0.9.tar.gz

cd xvf json-c-0.9.tar.gz

./configure

make

sudo make install

代码demo如下:

#include

#include "/usr/local/include/json/json.h"

/*

实现把点菜的信息以json打包与解析:

【{"name":"烤土豆",“price”:20},{"name":"小龙虾","price":300}】

*/

#include

#include "/usr/local/include/json/json.h"

int main(int argc, char const *argv[])

{

//1、创建一个json数组对象,就可以理解为外面那个大容器[]

struct json_object *arr=json_object_new_array();

//2、创建两个字符串对象,可以以理解为[]中的两个小容器{}

struct json_object *str1=json_object_new_object();

struct json_object *str2=json_object_new_object();

//3、把要存放的数据转为对象

struct json_object *value1=json_object_new_string("烤土豆");

struct json_object *value2=json_object_new_int(20);

struct json_object *value3=json_object_new_string("小龙虾");

struct json_object *value4=json_object_new_int(300);

//4、把数值对象添加到字符串对象中

json_object_object_add(str1,"name", value1);

json_object_object_add(str1,"price", value2);

json_object_object_add(str2,"name", value3);

json_object_object_add(str2,"price", value4);

//5、把字符串对象添加到数组对象中

json_object_array_add(arr,str1);

json_object_array_add(arr,str2);

//6、把数组对象转为字符流进行发送

const char *temp=json_object_to_json_string(arr);

printf("%s\n",temp);

//1、把得到的字符流转为数组对象

arr=json_tokener_parse(temp);

//2、获取数组指定位置的对象

str1=json_object_array_get_idx(arr,0);

str2=json_object_array_get_idx(arr,1);

//3、在字符串{}对象中根据key值找到数值对象

value1=json_object_object_get(str1,"name");

value2=json_object_object_get(str1,"price");

value3=json_object_object_get(str2,"name");

value4=json_object_object_get(str2,"price");

//4、数值对象转换为对应的数值

temp=json_object_get_string(value1);

int n=json_object_get_int(value2);

printf("%s : %d\n",temp,n);

temp=json_object_get_string(value3);

n=json_object_get_int(value4);

printf("%s : %d\n",temp,n);

return 0;

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是使用Jackson的JsonFactory和Stream API反序列化大型JSON示例代码: ```java // 1. 创建JsonFactory对象 JsonFactory factory = new JsonFactory(); // 2. 创建JsonParser对象 JsonParser parser = factory.createParser(new File("large.json")); // 3. 进入JSON对象的第一层 parser.nextToken(); // 4. 遍历JSON对象的第一层 while (parser.nextToken() != JsonToken.END_OBJECT) { String fieldName = parser.getCurrentName(); if ("data".equals(fieldName)) { // 进入JSON对象的第二层 parser.nextToken(); // 遍历JSON对象的第二层 while (parser.nextToken() != JsonToken.END_ARRAY) { // 反序列化JSON对象 Data data = parser.readValueAs(Data.class); System.out.println(data); } } else { parser.skipChildren(); } } // 5. 关闭JsonParser对象 parser.close(); ``` 在这个示例中,我们首先创建了一个JsonFactory对象,然后使用它创建了一个JsonParser对象,用于从文件中读取JSON数据并将其解析为Java对象。然后我们进入JSON对象的第一层,遍历其字段,并找到名为"data"的字段。一旦找到了"data"字段,我们进入JSON对象的第二层,并循环遍历其所有元素。在循环中,我们使用`parser.readValueAs()`方法反序列化JSON对象,并将其转换为Java对象。最后,我们关闭了JsonParser对象。 请注意,这个示例假设JSON数据的格式如下所示: ```json { "meta": { "total": 100 }, "data": [ { "id": 1, "name": "John" }, { "id": 2, "name": "Mary" }, ... ] } ``` 如果您的JSON数据格式不同,您需要相应地修改代码以适应您的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值