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 展示: