使用简单json,将包含json数组的json对象转换为字符串数组(java)

使用简单json,将包含json数组的json对象转换为字符串数组(java),java,arrays,json,string,Java,Arrays,Json,String,由于该问题在找到该特定问题的实际答案之前已经结束,因此它是。 在java中,我使用来处理json 我的json具有以下结构(被截断): 我使用以下代码读取json数据: try (FileReader reader = new FileReader( "/home/hduser/eclipse-workspace/db-simulatiob/src/generator-config.json")) { JSONObject obj = (

由于该问题在找到该特定问题的实际答案之前已经结束,因此它是。

在java中,我使用来处理json

我的json具有以下结构(被截断):

我使用以下代码读取json数据:

try (FileReader reader = new FileReader(
                "/home/hduser/eclipse-workspace/db-simulatiob/src/generator-config.json")) {

            JSONObject obj = (JSONObject) jsonParser.parse(reader);
我正在尝试将列表json数组转换为字符串数组,如下所示:

String[] aTag = (String[]) ((JSONObject) obj.get("assembling-tags")).get("list");
但这会引发以下异常:

线程“main”java.lang.ClassCastException中的异常: org.json.simple.JSONArray不能转换为[Ljava.lang.String


如何将json数组转换为字符串数组(
string[]
)?

使用以下代码,希望它能解决您的问题:

String jstr = "{\r\n" + 
                "\r\n" + 
                "    \"assembling-tags\": {\r\n" + 
                "        \"list\": [\r\n" + 
                "            \"G_StaticCushion_R\",\r\n" + 
                "            \"G_CommutationPosition_R\",\r\n" + 
                "            \"G_PlastificationPlasticisingDuration_R\",\r\n" + 
                "            \"G_PlastificationScrewPositionAfter_R\",\r\n" + 
                "            \"G_CommutationPressure_R\",\r\n" + 
                "            \"G_DynamicCommutationDuration_R\",\r\n" + 
                "            \"G_DynamicLockingToolDuration_R\",\r\n" + 
                "            \"G_CycleTime_R\",\r\n" + 
                "            \"CYCLE_TIME\",\r\n" + 
                "            \"G_ClosureSecurityClosingToolDuration_R\"\r\n" + 
                "        ]\r\n" + 
                "    }}";

        JSONObject obj  = new JSONObject(jstr);
        JSONArray jarr = obj .getJSONObject("assembling-tags").getJSONArray("list");
        String[] aTag =new String[jarr.length()];
        for(int i=0; i<aTag.length; i++) {
            aTag[i]=jarr.optString(i);
        } // aTag is ready to use 

        // Here I just print the output
        for(int i=0; i<aTag.length; i++) {
            System.out.println("jsonArray to String array:"+aTag[i]); 
        }

这回答了你的问题吗?异常试图告诉你一些事情,你读了吗?@Smile No,因为我想要的是字符串[],而不是数组列表。(将编辑此细节的问题)。此外,我正在使用jsonsimple,所以我有一个JSON对象(请参阅代码),不是字符串。@f1sh是的。我不知道如何解决这个问题,因此这个问题。你阅读了这个问题的所有答案了吗。第二个答案显示了如何创建字符串数组。我正在使用jsonsimple。a
JSONObject
没有方法
getJSONObject
:S
String jstr = "{\r\n" + 
                "\r\n" + 
                "    \"assembling-tags\": {\r\n" + 
                "        \"list\": [\r\n" + 
                "            \"G_StaticCushion_R\",\r\n" + 
                "            \"G_CommutationPosition_R\",\r\n" + 
                "            \"G_PlastificationPlasticisingDuration_R\",\r\n" + 
                "            \"G_PlastificationScrewPositionAfter_R\",\r\n" + 
                "            \"G_CommutationPressure_R\",\r\n" + 
                "            \"G_DynamicCommutationDuration_R\",\r\n" + 
                "            \"G_DynamicLockingToolDuration_R\",\r\n" + 
                "            \"G_CycleTime_R\",\r\n" + 
                "            \"CYCLE_TIME\",\r\n" + 
                "            \"G_ClosureSecurityClosingToolDuration_R\"\r\n" + 
                "        ]\r\n" + 
                "    }}";

        JSONObject obj  = new JSONObject(jstr);
        JSONArray jarr = obj .getJSONObject("assembling-tags").getJSONArray("list");
        String[] aTag =new String[jarr.length()];
        for(int i=0; i<aTag.length; i++) {
            aTag[i]=jarr.optString(i);
        } // aTag is ready to use 

        // Here I just print the output
        for(int i=0; i<aTag.length; i++) {
            System.out.println("jsonArray to String array:"+aTag[i]); 
        }
import org.json.JSONArray;
import org.json.JSONObject;