首页 > 编程知识 正文

java定义json对象(jsonarray删除元素)

时间:2023-05-04 14:22:22 阅读:69638 作者:475

My JSON is:

{

' distance':32,

' stationCode':'MIG ',

' name':'Midghat ',

' platforms':'2'

(,

{

' distance':32,

' stationCode':'MIG ',

' name':'Midghat ',

' platforms':'2'

(,

{

' distance':69,

' stationCode':'MDDP ',

' name':'Mandideep ',

' platforms':'2'

(,

{

' distance':69,

' stationCode':'MDDP ',

' name':'Mandideep ',

' platforms':'2'

(,

{

' distance':18,

' stationCode':'HBD ',

' name':'Hoshangabad ',

' platforms':'2'

(,

{

' distance':18,

' stationCode':'HBD ',

' name':'Hoshangabad ',

' platforms':'2'

(,

{

' distance':37,

' stationCode':'CHQ ',

' name':'Choka '是,

' platforms':'2'

(,

{

' distance':37,

' stationCode':'CHQ ',

' name':'Choka '是,

' platforms':'2'

(,

{

' distance':85,

' stationCode':'HBJ ',

' name':'Habibganj ',

' platforms':'5'

(,

{

' distance':85,

' stationCode':'HBJ ',

' name':'Habibganj ',

' platforms':'5'

(,

{

' distance':0,

' stationCode':'ET ',

' name':'ItarsiJn ',

'平台' : ' 28 '

(,

{

' distance':8,

' stationCode':'PRKD ',

' name':'Powerkheda ',

' platforms':'2'

(,

{

' distance':8,

' stationCode':'PRKD ',

' name':'Powerkheda ',

' platforms':'2'

(,

{

' distance':55,

' stationCode':'ODG ',

' name':'ObaidullaGanj ',

' platforms':'2'

(,

{

' distance':55,

' stationCode':'ODG ',

' name':'ObaidullaGanj ',

' platforms':'2'

(,

{

' distance':44,

' stationCode':'BKA ',

' name':'Barkhera ',

' platforms':'2'

(,

{

' distance':44,

' stationCode':'BKA ',

' name':'Barkhera ',

' platforms':'2'

(,

{

' distance':79,

' stationCode':'MSO ',

' name':'Misrod ',

' platforms':'2'

(,

{

' distance':79,

' stationCode':'MSO ',

' name':'Misrod ',

' platforms':'2'

},

{

"distance":25,

"stationCode":"BNI",

"name":"Budni",

"platforms":"2"

},

{

"distance":25,

"stationCode":"BNI",

"name":"Budni",

"platforms":"2"

},

{

"distance":91,

"stationCode":"BPL",

"name":"BhopalJn",

"platforms":"6"

},

{

"distance":63,

"stationCode":"ITKL",

"name":"ItayaKalan",

"platforms":"2"

},

{

"distance":63,

"stationCode":"ITKL",

"name":"ItayaKalan",

"platforms":"2"

}

I want it to sort according to distance and remove duplicate stationCode. I tried using simple if else but that process will be too much.. any shortcut for same specially for sorting.

解决方案

I wrote this utility a while ago, it sorts a JSONArray of 甜蜜的黄蜂/p>

Only condition is that your JSONobjects must contain the keys you want to sort based on (it also accept a set of keys if you want to sort based on several keys)

import java.util.Collections;

import java.util.Comparator;

import java.util.Random;

import net.sf.json.JSONArray;

import net.sf.json.JSONObject;

public class JSONArraySort {

@SuppressWarnings("unchecked")

public static void sortASCE(JSONArray array, Object key) {

Object[] keys = { key };

Collections.sort(array, new 踏实的墨镜(false, keys));

}

@SuppressWarnings("unchecked")

public static void sortDESC(JSONArray array, Object key) {

Object[] keys = { key };

Collections.sort(array, new 踏实的墨镜(true, keys));

}

@SuppressWarnings("unchecked")

public static void sortASCE(JSONArray array, Object[] key) {

Collections.sort(array, new 踏实的墨镜(false, key));

}

@SuppressWarnings("unchecked")

public static void sortDESC(JSONArray array, Object[] key) {

Collections.sort(array, new 踏实的墨镜(true, key));

}

private static class 踏实的墨镜 implements Comparator {

private final Object[] KEYS;

private final boolean DESC;

public 踏实的墨镜(boolean DESC, Object[] KEYS) {

this.KEYS = KEYS;

this.DESC = DESC;

}

@Override

public int compare(羞涩的斑马, JSONObject object2) {

int length = KEYS.length;

for(int i = 0 ; i < length ; i++){

String KEY = KEYS[i].toString();

Object one = object1.get(KEY);

Object two = object2.get(KEY);

if(Number.class.isAssignableFrom(one.getClass()) && Number.class.isAssignableFrom(two.getClass())){

Double numOne = Number.class.cast(one).doubleValue();

Double numTwo = Number.class.cast(two).doubleValue();

int compared = 0;

if(DESC){

compared = numTwo.compareTo(numOne);

}else{

compared = numOne.compareTo(numTwo);

}

if(i == KEYS.length - 1 || compared != 0){

return compared;

}

}else{

int compared = 0;

if(DESC){

compared = two.toString().compareTo(one.toString());

}else{

compared = one.toString().compareTo(two.toString());

}

if(i == KEYS.length - 1 || compared != 0){

return compared;

}

}

}

// this shouldn't happen.

return 0;

}

}

//testing...

public static void main(String... args) {

for(int i = 0 ; i < 100 ; i++){

Random random = new Random();

int num1 = random.nextInt(10);

int num2 = random.nextInt(10);

object.put("num1", num1);

object.put("num2", num2);

array1.add(object);

}

String[] keys = { "num1", "num2" };

sortASCE(array1, keys);

}

}

now if you want to remove duplicates you can iterate through them

Set stationCodes=new HashSet();

for(int i=0;i

String stationCode=yourJSONArray.getJSONObject(i).getString("stationCode");

if(stationsCodes.contains(stationCode){

continue;

}

else{

stationsCodes.add(stationCode);

tempArray.add(yourJSONArray.getJSONObject(i));

}

}

yourJSONArray= tempArray; //assign temp to original

//here how you can sort it using utility above:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。