在jsonArray Android中对JSONObject进行分组
我有一个jsonArray,其中包含一组JSONObject,我想通过market_id对它们进行分组,这样具有类似market_id的对象就可以分别保存在它们自己的列表或数组中。我怎样才能做到这一点在jsonArray Android中对JSONObject进行分组,android,arrays,json,sorting,Android,Arrays,Json,Sorting,我有一个jsonArray,其中包含一组JSONObject,我想通过market_id对它们进行分组,这样具有类似market_id的对象就可以分别保存在它们自己的列表或数组中。我怎样才能做到这一点 [ { "product_id": "12301", "selection": "No", "sales": "31", "market_id": "10", }, { "product_id": "12302", "selection": "No"
[
{
"product_id": "12301",
"selection": "No",
"sales": "31",
"market_id": "10",
},
{
"product_id": "12302",
"selection": "No",
"sales": "24",
"market_id": "43",
},
{
"product_id": "12303",
"selection": "Yes",
"sales": "121",
"market_id": "10",
},
{
"product_id": "12304",
"selection": "No",
"sales": "0",
"market_id": "43",
},
{
"product_id": "12305",
"selection": "Yes",
"sales": "20",
"market_id": "43",
},
]
为了实现这样的目标:
[{
"product_id": "12304",
"selection": "No",
"sales": "0",
"market_id": "43",
},
{
"product_id": "12305",
"selection": "Yes",
"sales": "20",
"market_id": "43",
},
{
"product_id": "12302",
"selection": "No",
"sales": "24",
"market_id": "43",
},]
最后,我简单地遍历了jsonArray中的每个对象,并将共享相似市场id的对象添加到它们自己的jsonArray中。虽然不漂亮,但很管用
try {
JSONArray jsonArray = new JSONArray(mainjson);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
String market_id = jsonObject.getString("market_id");
if (market_id.equalsIgnoreCase("43")) {
JSONObject json = new JSONObject();
json.put("match_id", jsonObject.getString("product_id"));
json.put("selection", jsonObject.getString("selection"));
json.put("sales", jsonObject.getString("sales"));
json.put("market_id", jsonObject.getString("market_id"));
new_json.put(json);
} else if (market_id.equalsIgnoreCase("10")) {
....
试试看{
JSONArray JSONArray=新JSONArray(mainjson);
for(int i=0;i
首先创建一个实现Comparator接口的Product model类,这样您就可以按marketId对ProductList进行排序
Product.java
public class Product implements Comparator<Product> {
public String productId;
public String selection;
public String sales;
public String marketId;
public Product() {
super();
}
@Override
public int compare(final Product p1, final Product p2) {
if (!TextUtils.isEmpty(p1.marketId) && !TextUtils.isEmpty(p2.marketId)) {
return p1.marketId.compareTo(p2.marketId); //Ascending order
}
return 0;
}
}
public class ProductParser {
private static final String TAG = ProductParser.class.getSimpleName();
private static final String PRODUCT_ID = "product_id";
private static final String SELECTION = "selection";
private static final String SALES = "sales";
private static final String MARKET_ID = "market_id";
private static final String HELPER_ID = "-1";
public ProductParser() {
super();
}
public List<Product> parseProductArrayToProductList(final JSONArray productArray) {
final List<Product> productsList = new ArrayList<>();
if (null != productArray) {
try {
final int productCount = productArray.length();
for (int i = 0; i < productCount; ++i) {
final JSONObject productJson = productArray.getJSONObject(i);
final Product product = new Product();
product.productId = productJson.getString(PRODUCT_ID);
product.selection = productJson.getString(SELECTION);
product.sales = productJson.getString(SALES);
product.marketId = productJson.getString(MARKET_ID);
productsList.add(product);
}
} catch (final JSONException e) {
Log.e(TAG, e.toString());
}
}
return productsList;
}
public JSONArray parseProductListToGroupedProductArray(final List<Product> productList) {
final JSONArray groupedProductArray = new JSONArray();
if (null != productList && !productList.isEmpty()) {
final int productCount = productList.size();
String currentMarketId = HELPER_ID;
JSONArray productArray = null;
for (int i = 0; i < productCount; ++i) {
final Product product = productList.get(i);
if (null != product) {
if (!currentMarketId.equals(product.marketId)) {
currentMarketId = product.marketId;
if (null != productArray) {
groupedProductArray.put(productArray);
}
productArray = new JSONArray();
}
try {
final JSONObject productObject = new JSONObject();
productObject.put(PRODUCT_ID, product.productId);
productObject.put(SELECTION, product.selection);
productObject.put(SALES, product.sales);
productObject.put(MARKET_ID, product.marketId);
productArray.put(productObject);
} catch (final JSONException e) {
Log.e(TAG, e.toString());
}
}
}
if (null != productArray) {
groupedProductArray.put(productArray);
}
}
return groupedProductArray;
}
}
public class MainActivity extends AppCompatActivity {
private static final String TAG = MainActivity.class.getSimpleName();
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final String data = "\r\n\r\n[\r\n {\r\n \"product_id\": \"12301\",\r\n \"selection\": \"No\",\r\n \"sales\": \"31\",\r\n \"market_id\": \"10\"\r\n },\r\n {\r\n \"product_id\": \"12302\",\r\n \"selection\": \"No\",\r\n \"sales\": \"24\",\r\n \"market_id\": \"43\"\r\n },\r\n {\r\n \"product_id\": \"12303\",\r\n \"selection\": \"Yes\",\r\n \"sales\": \"121\",\r\n \"market_id\": \"10\"\r\n },\r\n {\r\n \"product_id\": \"12304\",\r\n \"selection\": \"No\",\r\n \"sales\": \"0\",\r\n \"market_id\": \"43\"\r\n },\r\n {\r\n \"product_id\": \"12305\",\r\n \"selection\": \"Yes\",\r\n \"sales\": \"20\",\r\n \"market_id\": \"43\"\r\n }\r\n]\r\n\r\n";
final List<Product> productList = getProductList(data);
Collections.sort(productList, new Product());
final JSONArray sortedProductArray = getProductArray(productList);
Log.e(TAG, sortedProductArray.toString()); // Here you have!
}
private List<Product> getProductList(final String data) {
List<Product> productList = new ArrayList<>();
try {
final JSONArray productArray = new JSONArray(data);
final ProductParser parser = new ProductParser();
productList = parser.parseProductArrayToProductList(productArray);
} catch (final JSONException e) {
Log.e(TAG, e.toString());
}
return productList;
}
private JSONArray getProductArray(final List<Product> productList) {
final ProductParser parser = new ProductParser();
return parser.parseProductListToGroupedProductArray(productList);
}
}
公共类产品实现Comparator{
公共字符串productId;
公共字符串选择;
公开销售;
公共市场化;
公共产品(){
超级();
}
@凌驾
公共整数比较(最终产品p1、最终产品p2){
如果(!TextUtils.isEmpty(p1.marketId)和&!TextUtils.isEmpty(p2.marketId)){
返回p1.marketId.compareTo(p2.marketId);//升序
}
返回0;
}
}
其次,创建一个产品解析器类,将产品列表JSONArray解析为产品类型列表,并将产品类型列表解析为分组产品JSONArray
ProductParser.java
public class Product implements Comparator<Product> {
public String productId;
public String selection;
public String sales;
public String marketId;
public Product() {
super();
}
@Override
public int compare(final Product p1, final Product p2) {
if (!TextUtils.isEmpty(p1.marketId) && !TextUtils.isEmpty(p2.marketId)) {
return p1.marketId.compareTo(p2.marketId); //Ascending order
}
return 0;
}
}
public class ProductParser {
private static final String TAG = ProductParser.class.getSimpleName();
private static final String PRODUCT_ID = "product_id";
private static final String SELECTION = "selection";
private static final String SALES = "sales";
private static final String MARKET_ID = "market_id";
private static final String HELPER_ID = "-1";
public ProductParser() {
super();
}
public List<Product> parseProductArrayToProductList(final JSONArray productArray) {
final List<Product> productsList = new ArrayList<>();
if (null != productArray) {
try {
final int productCount = productArray.length();
for (int i = 0; i < productCount; ++i) {
final JSONObject productJson = productArray.getJSONObject(i);
final Product product = new Product();
product.productId = productJson.getString(PRODUCT_ID);
product.selection = productJson.getString(SELECTION);
product.sales = productJson.getString(SALES);
product.marketId = productJson.getString(MARKET_ID);
productsList.add(product);
}
} catch (final JSONException e) {
Log.e(TAG, e.toString());
}
}
return productsList;
}
public JSONArray parseProductListToGroupedProductArray(final List<Product> productList) {
final JSONArray groupedProductArray = new JSONArray();
if (null != productList && !productList.isEmpty()) {
final int productCount = productList.size();
String currentMarketId = HELPER_ID;
JSONArray productArray = null;
for (int i = 0; i < productCount; ++i) {
final Product product = productList.get(i);
if (null != product) {
if (!currentMarketId.equals(product.marketId)) {
currentMarketId = product.marketId;
if (null != productArray) {
groupedProductArray.put(productArray);
}
productArray = new JSONArray();
}
try {
final JSONObject productObject = new JSONObject();
productObject.put(PRODUCT_ID, product.productId);
productObject.put(SELECTION, product.selection);
productObject.put(SALES, product.sales);
productObject.put(MARKET_ID, product.marketId);
productArray.put(productObject);
} catch (final JSONException e) {
Log.e(TAG, e.toString());
}
}
}
if (null != productArray) {
groupedProductArray.put(productArray);
}
}
return groupedProductArray;
}
}
public class MainActivity extends AppCompatActivity {
private static final String TAG = MainActivity.class.getSimpleName();
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final String data = "\r\n\r\n[\r\n {\r\n \"product_id\": \"12301\",\r\n \"selection\": \"No\",\r\n \"sales\": \"31\",\r\n \"market_id\": \"10\"\r\n },\r\n {\r\n \"product_id\": \"12302\",\r\n \"selection\": \"No\",\r\n \"sales\": \"24\",\r\n \"market_id\": \"43\"\r\n },\r\n {\r\n \"product_id\": \"12303\",\r\n \"selection\": \"Yes\",\r\n \"sales\": \"121\",\r\n \"market_id\": \"10\"\r\n },\r\n {\r\n \"product_id\": \"12304\",\r\n \"selection\": \"No\",\r\n \"sales\": \"0\",\r\n \"market_id\": \"43\"\r\n },\r\n {\r\n \"product_id\": \"12305\",\r\n \"selection\": \"Yes\",\r\n \"sales\": \"20\",\r\n \"market_id\": \"43\"\r\n }\r\n]\r\n\r\n";
final List<Product> productList = getProductList(data);
Collections.sort(productList, new Product());
final JSONArray sortedProductArray = getProductArray(productList);
Log.e(TAG, sortedProductArray.toString()); // Here you have!
}
private List<Product> getProductList(final String data) {
List<Product> productList = new ArrayList<>();
try {
final JSONArray productArray = new JSONArray(data);
final ProductParser parser = new ProductParser();
productList = parser.parseProductArrayToProductList(productArray);
} catch (final JSONException e) {
Log.e(TAG, e.toString());
}
return productList;
}
private JSONArray getProductArray(final List<Product> productList) {
final ProductParser parser = new ProductParser();
return parser.parseProductListToGroupedProductArray(productList);
}
}
公共类ProductParser{
私有静态最终字符串标记=ProductParser.class.getSimpleName();
私有静态最终字符串PRODUCT\u ID=“PRODUCT\u ID”;
私有静态最终字符串SELECTION=“SELECTION”;
私有静态最终字符串SALES=“SALES”;
私有静态最终字符串MARKET\u ID=“MARKET\u ID”;
私有静态最终字符串HELPER_ID=“-1”;
公共产品解析器(){
超级();
}
公共列表parseProductArrayToProductList(最终JSONArray productArray){
最终列表productsList=new ArrayList();
if(null!=productArray){
试一试{
final int productCount=productArray.length();
对于(int i=0;i
最后,在您的活动中或需要实现此功能的任何地方,请使用提供的类别
MainActivity.java
public class Product implements Comparator<Product> {
public String productId;
public String selection;
public String sales;
public String marketId;
public Product() {
super();
}
@Override
public int compare(final Product p1, final Product p2) {
if (!TextUtils.isEmpty(p1.marketId) && !TextUtils.isEmpty(p2.marketId)) {
return p1.marketId.compareTo(p2.marketId); //Ascending order
}
return 0;
}
}
public class ProductParser {
private static final String TAG = ProductParser.class.getSimpleName();
private static final String PRODUCT_ID = "product_id";
private static final String SELECTION = "selection";
private static final String SALES = "sales";
private static final String MARKET_ID = "market_id";
private static final String HELPER_ID = "-1";
public ProductParser() {
super();
}
public List<Product> parseProductArrayToProductList(final JSONArray productArray) {
final List<Product> productsList = new ArrayList<>();
if (null != productArray) {
try {
final int productCount = productArray.length();
for (int i = 0; i < productCount; ++i) {
final JSONObject productJson = productArray.getJSONObject(i);
final Product product = new Product();
product.productId = productJson.getString(PRODUCT_ID);
product.selection = productJson.getString(SELECTION);
product.sales = productJson.getString(SALES);
product.marketId = productJson.getString(MARKET_ID);
productsList.add(product);
}
} catch (final JSONException e) {
Log.e(TAG, e.toString());
}
}
return productsList;
}
public JSONArray parseProductListToGroupedProductArray(final List<Product> productList) {
final JSONArray groupedProductArray = new JSONArray();
if (null != productList && !productList.isEmpty()) {
final int productCount = productList.size();
String currentMarketId = HELPER_ID;
JSONArray productArray = null;
for (int i = 0; i < productCount; ++i) {
final Product product = productList.get(i);
if (null != product) {
if (!currentMarketId.equals(product.marketId)) {
currentMarketId = product.marketId;
if (null != productArray) {
groupedProductArray.put(productArray);
}
productArray = new JSONArray();
}
try {
final JSONObject productObject = new JSONObject();
productObject.put(PRODUCT_ID, product.productId);
productObject.put(SELECTION, product.selection);
productObject.put(SALES, product.sales);
productObject.put(MARKET_ID, product.marketId);
productArray.put(productObject);
} catch (final JSONException e) {
Log.e(TAG, e.toString());
}
}
}
if (null != productArray) {
groupedProductArray.put(productArray);
}
}
return groupedProductArray;
}
}
public class MainActivity extends AppCompatActivity {
private static final String TAG = MainActivity.class.getSimpleName();
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final String data = "\r\n\r\n[\r\n {\r\n \"product_id\": \"12301\",\r\n \"selection\": \"No\",\r\n \"sales\": \"31\",\r\n \"market_id\": \"10\"\r\n },\r\n {\r\n \"product_id\": \"12302\",\r\n \"selection\": \"No\",\r\n \"sales\": \"24\",\r\n \"market_id\": \"43\"\r\n },\r\n {\r\n \"product_id\": \"12303\",\r\n \"selection\": \"Yes\",\r\n \"sales\": \"121\",\r\n \"market_id\": \"10\"\r\n },\r\n {\r\n \"product_id\": \"12304\",\r\n \"selection\": \"No\",\r\n \"sales\": \"0\",\r\n \"market_id\": \"43\"\r\n },\r\n {\r\n \"product_id\": \"12305\",\r\n \"selection\": \"Yes\",\r\n \"sales\": \"20\",\r\n \"market_id\": \"43\"\r\n }\r\n]\r\n\r\n";
final List<Product> productList = getProductList(data);
Collections.sort(productList, new Product());
final JSONArray sortedProductArray = getProductArray(productList);
Log.e(TAG, sortedProductArray.toString()); // Here you have!
}
private List<Product> getProductList(final String data) {
List<Product> productList = new ArrayList<>();
try {
final JSONArray productArray = new JSONArray(data);
final ProductParser parser = new ProductParser();
productList = parser.parseProductArrayToProductList(productArray);
} catch (final JSONException e) {
Log.e(TAG, e.toString());
}
return productList;
}
private JSONArray getProductArray(final List<Product> productList) {
final ProductParser parser = new ProductParser();
return parser.parseProductListToGroupedProductArray(productList);
}
}
public类MainActivity扩展了AppCompatActivity{
私有静态最终字符串标记=MainActivity.class.getSimpleName();
@凌驾
创建时受保护的void(最终捆绑包savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
“1.31”和\r\n\n\n\n\n\n\n\n\n\n\n\n\n\n“选择”的“选择”除了除了除了除了除了“否”以外,\r\n\r\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n_id\“12303\”,\r\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n市场的市场的身份识别码”是指“12.121\”,\\r\n\\n\3\3\3\3\3\3\n\n\n\n\n\n\n\3\3\3\3\3\3\3\3\3\3\3\n\n\n\n\r\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\n\r\n\n\n\r\n\n\n\n\r\n\n\n\r\n\r\n\n\n\n\r\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n r\n\“sales\”:“20\”,\r\n“market\u id\”:“43\”