1、打印json 数据时经常出现 如下情况

 

2、出现原因

是因为 jsonArray 中 保存了相同的对象,当引用时,只是使用了前一个对象的引用。

public class MainActivity extends AppCompatActivity {

    private String TAG = "jsonTest";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        Map<String ,String > map = new HashMap<>();
        map.put("小明","男");

        List<Map> listMap = new ArrayList<>();
        listMap.add(map);
        listMap.add(map); // 这里直接添加一样的数据对象

        JSONArray jsonArray = new JSONArray();
        jsonArray.addAll(listMap);

        Log.i(TAG,jsonArray.toJSONString());
    }

}

3、解决办法

public class MainActivity extends AppCompatActivity {

    private String TAG = "jsonTest";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        Map<String ,String > map = new HashMap<>();
        map.put("小明","男");

        List<Map> listMap = new ArrayList<>();
        listMap.add(map);
        listMap.add(map);

        // 单个关闭引用检测
        String listString  = JSON.toJSONString(listMap, SerializerFeature.DisableCircularReferenceDetect);
        JSONArray jsonList = (JSONArray) JSON.parse(listString);

        Log.i(TAG,jsonList.toJSONString());
    }

}

log 展示:

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐