如何在java中将json数据转换为字符串

ss3*_*670 0 java arrays json jsonobject

我想将json数据转换为字符串

import java.io.BufferedReader;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import org.json.JSONArray;
import org.json.JSONObject;
public static void main(String[] args) throws Exception
{

    URL url = new URL("http://192.168.1.13/test/ProductWb.php?productId=9");
    HttpURLConnection conn ;
    conn = (HttpURLConnection) url.openConnection();
    conn.setRequestMethod("GET");
    conn.setReadTimeout(60);
    conn.setRequestProperty("Accept", "application/json");
    String json="";

    json = readUrl(conn);
           System.out.println(json);
           JSONObject jsonObject=new JSONObject(json);
           JSONArray jarray=jsonObject.getJSONArray("modeles");
           JSONObject  modele= jarray.getJSONObject("modele");
           for (int i=0;i<modele.length();i++) {
               System.out.println(modele(i).getString("id_product"));
                System.out.println(modele(i).getString("meta_title"));
                System.out.println("*********");
              }


}
Run Code Online (Sandbox Code Playgroud)

它告诉我json数据,但给我这个错误:

{"modeles":[{"modele":{"id_product":"9","id_shop":"1","id_lang":"4","description":null,"description_short":"<pre>Peugeot 208<\/pre>","info_prix":"","info_1":null,"info_2":null,"info_3":null,"info_4":null,"info_5":null,"link_rewrite":"208","meta_description":"Peugeot 208","meta_keywords":"peugeot 208","meta_title":"Peugeot 208","name":"208","available_now":"","available_later":""}}]}
Exception in thread "main" java.lang.IllegalStateException: This is not a JSON Array.
at com.google.gson.JsonElement.getAsJsonArray(JsonElement.java:106)
at com.autoreduc.services.TestProduct.main(TestProduct.java:59)
Run Code Online (Sandbox Code Playgroud)

如果您有任何解决方案,请帮助我.提前致谢

Men*_*ena 6

您的JSON不是数组.

它是一个具有一个属性的JSON对象:modeles,其值为数组.

将根解析为JsonObject.


小智 5

您可以使用 ObjectMapper 将对象转换为 json 字符串:

ObjectMapper mapper = new ObjectMapper();
try {
  String json = mapper.writeValueAsString(cat);
  System.out.println("ResultingJSONstring = " + json);
  //System.out.println(json);
} catch (JsonProcessingException e) {
   e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)