2016-01-27 2 views
0

Я пытаюсь разобрать JSON. В последнее время я пытаюсь использовать GSON, чтобы сделать это в студии Android. Однако я не могу получить соединение или сделать что-либо с данными. Данные, которые я бы смотреть на, если бы я мог получить его с сайта будет выглядеть примерно так:Parsing Json из URL в Android Studio

{"item":{"icon":"address_here", 
id=820","id":820,"type":"Default", 
"typeIcon":"catagory","name":"Name of Object", 
"description":"This is an annoying issue to get stuck on"}} 

Я использую асинхра, но безрезультатно. Возможно, новый способ взглянуть на это будет хорошо.

Вот мой текущий код:

public class JavaParser extends AsyncTask<String, String, String> { 
public String getInternetData() throws Exception { 
    String sURL = "someurl.com"; //just a string 

    // Connect to the URL using java's native library 

    try { 
     URL url = new URL(sURL); 
     HttpURLConnection request = (HttpURLConnection) url.openConnection(); 
     Log.d("Debug:", "Made partial connection"); 
     try { 
      request.connect(); 
     } catch (IOException e1) { 
      e1.printStackTrace(); 
     } 
     Log.d("Debug:", "Made connection"); 
    } 
    catch(Exception e){ 

    } 
    return "FAILURE"; 
} 
private String response = null; 

@Override 
protected String doInBackground(String...params) { 
    try { 
     response = new JavaParser().getInternetData(); 
    } 
    catch(Exception e){ 
    Log.d("Error",e.getMessage() 
    ); 
    } 
    return response; 
} 

}

В моем главном классе:

String response = new JavaParser().execute("URL").get();  //eventually I hope to pass the url here to be more dynamic 
     //Convert to a JSON object to print data 
     JsonParser jp = new JsonParser(); //from gson 
     JsonElement root = jp.parse(new InputStreamReader((InputStream) request.getContent())); //Convert the input stream to a json element 
     JsonObject rootobj = root.getAsJsonObject(); //May be an array, may be an object. 

     Gson gson = new Gson(); 
     Wrapper response = gson.fromJson(rootobj, Wrapper.class); 


     Log.d("Out: ",rootobj.get("item\name").getAsString()); //just grab the name info 

И моя обертка выглядит так:

public class Wrapper { 

@SerializedName("name") 
public String item_name; 

@SerializedName("icon") 
public String iconURL; 

@SerializedName("description") 
public String item_description; 

//more to be added if it works 

}

Программа только делает частичное соединение. Я не могу получить строку request.connect(); для работы.

+0

Оставьте свой код. – Jas

+0

Покажите нам, что вы пробовали до сих пор, поэтому мы можем вам помочь ... –

+0

Отправленный код – user1519194

ответ

0

Как оказалось, разрешение было в неправильной части манифеста. Он должен быть рядом с верхушкой, я поставил его как таковой

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.yargonauts.burk.app"> 
<uses-permission android:name="android.permission.INTERNET" />