为JSON输入中的记录分配组号

时间:2018-07-23 16:27:25

标签: java json

我正在尝试通过将row_num分配给每个键值对来对JSON中的记录进行分组。我是Java新手,所以有人可以解释我在做什么错。

当前结果:

AHFS:[]:0
Action:"":1
AdminInstructions:"Take 2 capsules by mouth daily":2
AHFS:["28:08.04.92"]:0
Id:"101":1
Name:"Office Visit":2
EncounterType:{"Id":"101","Name":"Office Visit"}:1
MedicationOrders:[{"AHFS":[],"Action":"","AdminInstructions":"Take 2 capsules `by mouth daily"},{"AHFS":["28:08.04.92"],"EncounterType":{"Id":"101","Name":"Office Visit"}}]:0`

预期结果:

AHFS:[]:0
Action:"":0
AdminInstructions:"Take 2 capsules by mouth daily":0
AHFS:["28:08.04.92"]:1
Id:"101":1
Name:"Office Visit":1
EncounterType:{"Id":"101","Name":"Office Visit"}:1
MedicationOrders:[{"AHFS":[],"Action":"","AdminInstructions":"Take 2 capsules `by mouth daily"},{"AHFS":["28:08.04.92"],"EncounterType":{"Id":"101","Name":"Office Visit"}}]:0`

代码:

import java.util.Map;
import java.util.Set;
import com.google.gson.*;
import com.google.gson.JsonElement;
import java.util.Iterator;
import java.util.ArrayList;
import org.json.*;

public class JsonParsing {
static JsonParser parser = new JsonParser();
public static void createHashMapFromJsonString(String json, int row_num) 
{       
        JsonElement object = (JsonElement) parser.parse(json);
        Set<Map.Entry<String, JsonElement>> set = (object.getAsJsonObject()).entrySet();
        Iterator<Map.Entry<String, JsonElement>> iterator = set.iterator();
        ArrayList<String> map = new ArrayList<String>();
        while (iterator.hasNext()) 
        {
            Map.Entry<String, JsonElement> entry = iterator.next();
            String key = entry.getKey();
            JsonElement value = entry.getValue();
            if (null != value) 
            {

                if (!value.isJsonPrimitive()) 
                {
                    if (value.isJsonObject()) 
                    {
                        createHashMapFromJsonString(value.toString(), row_num);  

                    } 
                    else if (value.isJsonArray() && value.toString().contains(":")) 
                    {

                        ArrayList<String> list = new ArrayList<>();
                        JsonArray array = value.getAsJsonArray();
                        if (null != array) 
                        {
                            for (JsonElement element : array) 
                            {
                                if (!element.isJsonPrimitive()) {
                                    createHashMapFromJsonString(element.toString(), row_num);
                                }else{
                                    list.add(element.toString());     

                                }                               
                            }
                            map.add(key+list);

                        }                          
                    } 
                    else if (value.isJsonArray() && !value.toString().contains(":")) 
                    {
                        map.add(key+value.getAsJsonArray());

                    }

                } 
                else 
                {

                    map.add(key+value.getAsString());
                }
            }
            map.add(key+value.toString());
            System.out.println(key+":"+value+":"+row_num);     
            row_num++;
        }   

}

public static void main(String args[]) 
{
    String json_input = "{\"MedicationOrders\":[{\"AHFS\":[],\"Action\":\"\",\"AdminInstructions\":\"Take 2 capsules by mouth daily\"},{\"AHFS\":[\"28:08.04.92\"],\"EncounterType\":{\"Id\":\"101\",\"Name\":\"Office Visit\"}}]}";
    int row_num = 0;
    if(json_input.trim().charAt(0) == '[')
    {
        try 
        {
            JSONArray jsonArray = new JSONArray(json_input);
            for (int i = 0; i < jsonArray.length(); i++)
            {       
                JSONObject jsonobject = jsonArray.getJSONObject(i);
                String json = jsonobject.toString();
                createHashMapFromJsonString(json,row_num);  
                row_num++;
            }
        }
        catch (JSONException e)
        {
        }
    } 
    else 
    {
        createHashMapFromJsonString(json_input,row_num);    
    }

}   
}

0 个答案:

没有答案