json解析

 private String json =
   "[   " +
    "{     " +
     "\"id\": 912345678901," +
     "\"text\": \"How do I read JSON on Android?\"," +
     "\"geo\": null," +
     "\"user\": " +
     "{" +
      " \"name\": \"android_newb\"," +
      "\"followers_count\": 41" +
     "}" +
    "},"  +
    "{" +
     "\"id\": 912345678902," +
     "\"text\": \"@android_newb just use android.util.JsonReader!\"," +
     "\"geo\": [50.454722, -104.606667]," +
     "\"user\": " +
     "{" +
      "\"name\": \"jesse\"," +
      "\"followers_count\": 2" +
     "}" +
    "}" +
   "]";

第一种解析:

package com.zhg.json1;

import java.util.ArrayList;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

public class JsonParser {
 public ArrayList<Demo> parse2List(String json) {
  ArrayList<Demo> demos = new ArrayList<Demo>();
  try {
   JSONArray array = new JSONArray(json);
   for (int i = 0; i < array.length(); i++) {
    Demo demo = new Demo();
    JSONObject obj = array.getJSONObject(i);
    demo.setId(obj.getLong("id"));
    demo.setText(obj.getString("text"));
    if (!obj.isNull("geo")) {
     double[] geo = new double[2];
     JSONArray geoArray = obj.getJSONArray("geo");
     geo[0] = geoArray.getDouble(0);
     geo[1] = geoArray.getDouble(1);
     demo.setGeo(geo);
    }
    JSONObject userObj = obj.getJSONObject("user");
    User user = new User();
    user.setName(userObj.getString("name"));
    user.setFollower_count(userObj.getInt("followers_count"));
    demo.setUser(user);

    demos.add(demo);
   }
  } catch (JSONException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return demos;
 }

 public String parse2Json(ArrayList<Demo> demos) {
  String json = null;
  try {
   JSONArray array = new JSONArray();
   for (Demo demo : demos) {
    JSONObject obj = new JSONObject();
    obj.put("id", demo.getId());
    obj.put("text", demo.getText());
    if (demo.getGeo() == null) {
     obj.put("geo", JSONObject.NULL);
    } else {
     JSONArray geoArray = new JSONArray();
     geoArray.put(demo.getGeo()[0]);
     geoArray.put(demo.getGeo()[1]);
     obj.put("geo", geoArray);
    }
    JSONObject userObj = new JSONObject();
    userObj.put("name", demo.getUser().getName());
    userObj.put("followers_count", demo.getUser().getFollower_count());
    obj.put("user", userObj);
    array.put(obj);
   }
   json = array.toString();
  } catch (JSONException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return json;
 }
}

 

第二种解析:

package com.zhg.json2;

import java.io.IOException;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.ArrayList;

import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;
import com.google.gson.stream.JsonWriter;

public class JsonParser {
 public ArrayList<Demo> parse2List(String json){
  ArrayList<Demo> demos = new ArrayList<Demo>();
  try {
   StringReader sr = new StringReader(json);
   JsonReader reader = new JsonReader(sr);
   reader.beginArray();
   while(reader.hasNext()){
    Demo demo = new Demo();
    reader.beginObject();
    while(reader.hasNext()){
     String name = reader.nextName();
     if(name.equals("id")){
      demo.setId(reader.nextLong());
     }else if(name.equals("text")){
      demo.setText(reader.nextString());
     }else if(name.equals("geo")){
      double[] geo = null;
      if(reader.peek()==JsonToken.NULL){
       reader.nextNull();
      }else{
       geo = new double[2];
       int i = 0;
       reader.beginArray();
       while(reader.hasNext()){
        geo[i++] = reader.nextDouble();
       }
       reader.endArray();
      }
      demo.setGeo(geo);
     }else if(name.equals("user")){
      User user = new User();
      reader.beginObject();
      while(reader.hasNext()){
       String uName = reader.nextName();
       if(uName.equals("name")){
        user.setName(reader.nextString());
       }else if(uName.equals("followers_count")){
        user.setFollower_count(reader.nextInt());
       }
      }
      reader.endObject();
      demo.setUser(user);
     }
    }
    reader.endObject();
    demos.add(demo);
   }
   reader.endArray();
   sr.close();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return demos;
 }
 
 public String parse2Json(ArrayList<Demo> demos){
  String json = null;
  try {
   StringWriter sw = new StringWriter();
   JsonWriter writer = new JsonWriter(sw);
   writer.beginArray();
   for(Demo demo : demos){
    writer.beginObject();
    writer.name("id").value(demo.getId());
    writer.name("text").value(demo.getText());
    if(demo.getGeo()==null){
     writer.name("geo").nullValue();
    }else{
     writer.name("geo");
     writer.beginArray();
     writer.value(demo.getGeo()[0]);
     writer.value(demo.getGeo()[1]);
     writer.endArray();
    }
    writer.name("user");
    writer.beginObject();
    writer.name("name").value(demo.getUser().getName());
    writer.name("followers_count").value(demo.getUser().getFollower_count());
    writer.endObject();
    writer.endObject();
   }
   writer.endArray();
   writer.close();
   json = sw.toString();
   sw.close();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return json;
 }
}

 

第三种解析:

package com.zhg.utils;

import java.io.IOException;
import java.io.Reader;
import java.util.ArrayList;

import com.google.gson.stream.JsonReader;
import com.zhg.entity.Student;

public class JsonParser {
 public ArrayList<Student> parseToList(Reader in){
  ArrayList<Student> stus = new ArrayList<Student>();
  try {
   JsonReader reader = new JsonReader(in);
   reader.beginArray();
   while(reader.hasNext()){
    Student stu = new Student();
    reader.beginObject();
    while(reader.hasNext()){
     String name = reader.nextName();
     if(name.equals("id")){
      stu.setId(reader.nextInt());
     }else if (name.equals("name")){
      stu.setName(reader.nextString());
     }else if(name.equals("sex")){
      stu.setSex(reader.nextString());
     }else if(name.equals("age")){
      stu.setAge(reader.nextInt());
     }
    }
    reader.endObject();
    stus.add(stu);
   }
   reader.endArray();
   reader.close();
   in.close();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return stus;
 }
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32是一款嵌入式微控制器,在嵌入式系统中广泛应用。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于解析和生成。在STM32中使用JSON解析器可以实现对JSON格式数据的解析。 首先,需要在STM32的开发环境中集成JSON解析库。有许多第三方的JSON解析库可供选择,如cJSONJSON for Modern C等。这些库提供了用于解析JSON数据的函数和数据结构。 在解析JSON数据之前,需要先将JSON字符串数据加载到STM32的内存中。可以通过串口、网络等方式将JSON数据发送到STM32上。接收到的数据可以存储在数组或缓冲区中。 一旦JSON数据加载到了STM32的内存中,可以使用JSON解析库提供的函数对其进行解析。首先需要创建一个JSON对象,然后使用解析函数将JSON字符串数据解析JSON对象。解析函数会将JSON数据拆分成键值对的形式,并将其存储在JSON对象中。 一旦JSON对象创建完成,就可以通过遍历JSON对象的键值对来获取具体的数据。例如,可以使用键来获取相应的值。根据JSON数据的结构,可以使用递归或循环的方式来遍历复杂的JSON对象。 最后,根据应用需求,可以对解析后的数据进行处理、存储或传输。可以将数据用于控制外围设备、更新显示内容等。 总之,STM32的JSON解析过程需要集成JSON解析库,加载JSON数据到内存中,使用解析函数将数据解析JSON对象,遍历JSON对象获取数据,然后根据需求进行处理。通过合理的代码设计和调试,可以有效地实现STM32的JSON解析功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值