String转为Json

背景:在做跟浪潮合作的一个上传机器人日志的功能模块,使用socket.io进行的开发,后台接口对应好几个功能,比如首先获取日志列表,再根据日志列表选择想要上传的具体日志。
那么问题来了:

socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {

                    @Override
                    public void call(Object... arg0) {
                        // TODO Auto-generated method stub
                        Log.e("wy", "服务器连接成功" + arg0);
                        signIn();
                    }

                }).on("robot", new Emitter.Listener() {

                    @Override
                    public void call(Object... args) {
                        ***data*** = args[0];
                        Log.e("wy", "Socket返回数据:" + data);
                        JSONObject jasonObject = JSON.parseObject(data.toString());
                        Log.e("wy", "jasonObject数据:" + jasonObject);
                        Log.e("wy", "ActionType数据:" + jasonObject.get("ActionType"));
                        if (jasonObject.get("ActionType").equals("RequestLogList")) {
                            Log.e("wy", "上传日志列表:" + data.toString());
                            mRequestLogListEntity = JSON.parseObject(data.toString(), RequestLogListEntity.class);
                            ResponseLogList();
                        } else if (jasonObject.get("ActionType").equals("RequestLogUpload")) {
                            Log.e("wy", "上传指定日志:" + data.toString());
                            mRequestLogUploadEntity = JSON.parseObject(data.toString(), RequestLogUploadEntity.class);
                            mRequestLogUploadName=mRequestLogUploadEntity.getValueList().getLogName();

两个接口都是通过data进行的传输,两个data对应的实体并不一样,这样由于不能与具体的实体对应上就会报错
解决:原意是自己的知识盲点!!由于接口设计的外层ActionType字段是可以通用的,可以把jsonString转化为Json,只解析外层,再根据ActionType字段进行具体的业务对应
全代码

package com.example.hp.laochao;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Toast;

import com.alibaba.fastjson.JSON;

import com.alibaba.fastjson.JSONObject;
import com.github.nkzawa.emitter.Emitter;
import com.github.nkzawa.socketio.client.IO;
import com.github.nkzawa.socketio.client.Socket;
import com.inspur.robot.model.AppVersionInfoBean;
import com.inspur.robot.model.ValueListBean;


import org.xutils.common.Callback;
import org.xutils.http.RequestParams;

import java.io.File;
import java.net.URISyntaxException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.xutils.x;

public class MainActivity extends Activity {
    String meid = "86970302550751";
    //	浪潮socket之SingIn
    Socket socket;
    AppVersionInfoBean appVersionInfoBean = new AppVersionInfoBean();
    ValueListBean valueListBean = new ValueListBean();
    SignInEntity signInEntity = new SignInEntity();
    ActionTypeEntity mActionTypeEntit
在 Java 中使用 fastjson 将字符串转换成 JSON 格式,可以使用 JSON 类的静态方法 `parseObject` 或 `parseArray`。具体使用方法如下: 1. 使用 `parseObject` 方法将字符串转换成 JSON 对象: ```java import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; public class Example { public static void main(String[] args) { // 定义一个 JSON 字符串 String jsonString = "{\"name\":\"Tom\",\"age\":18}"; // 将字符串转换成 JSON 对象 JSONObject jsonObject = JSON.parseObject(jsonString); // 输出 JSON 对象 System.out.println(jsonObject); // 输出: {"name":"Tom","age":18} } } ``` 2. 使用 `parseArray` 方法将字符串转换成 JSON 数组: ```java import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; public class Example { public static void main(String[] args) { // 定义一个 JSON 数组字符串 String jsonArrayString = "[{\"name\":\"Tom\",\"age\":18},{\"name\":\"Jerry\",\"age\":20}]"; // 将字符串转换成 JSON 数组 JSONArray jsonArray = JSON.parseArray(jsonArrayString); // 输出 JSON 数组 System.out.println(jsonArray); // 输出: [{"name":"Tom","age":18},{"name":"Jerry","age":20}] } } ``` 以上示例中,分别使用 `parseObject` 和 `parseArray` 方法将字符串转换成了对应的 JSON 对象和 JSON 数组,并输出转换后的结果。 需要注意的是,在使用 fastjson 进行字符串转换时,如果字符串格式不符合 JSON 规范,会抛出异常。因此,在使用时需要确保字符串格式正确。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值