J'utilise la bibliothèque Unirest pour récupérer le code JSON d'une API Mashape. L'appel fonctionne avec le code suivant:
HttpResponse<JsonNode> request = Unirest.get(URL)
.header("X-Mashape-Authorization", MASHAPE_AUTH)
.asJson();
Cela retourne mon JSON sous la forme de HttpResponse<JsonNode>
, avec lequel je ne suis pas familier.
D'après la lecture de la documentation limitée _, il semble que je doive appeler getBody()
sur l'objet de réponse afin de récupérer un objet JsonNode. Je n'ai toujours aucune idée de ce qu'il faut faire avec l'objet JsonNode cependant.
Quel est le meilleur moyen de commencer à analyser ces données?
Edit: Au cas où cela vous aiderait à donner des exemples, le JSON que je veux analyser ressemble à ceci:
{
"success": "1",
"error_number": "",
"error_message": "",
"results": [
{
"name": "name1",
"formatedName": "Name 1"
},
{
"name": "testtesttest",
"formatedName": "Test Test Test"
},
{
"name": "nametest2",
"formatedName": "Name Test 2"
},
{
"name": "nametest3",
"formatedName": "Name Test 3"
}
]
}
J'essayais de comprendre cela aujourd'hui pour moi-même. Le code source est probablement la seule documentation que vous obtiendrez. Voici le tl; dr
// the request from your question
HttpResponse<JsonNode> request = Unirest.get(URL)
.header("X-Mashape-Authorization", MASHAPE_AUTH)
.asJson();
// retrieve the parsed JSONObject from the response
JSONObject myObj = request.getBody().getObject();
// extract fields from the object
String msg = myObj.getString("error_message");
JSONArray results = myObj.getJSONArray();
Voici quelques explications supplémentaires sur la spéléologie que j'ai faite:
Depuis la classe HttpResponse nous pouvons voir que getBody()
va renvoyer la variable d'instance body
, qui est affectée à la ligne 92 comme suit:
this.body = (T) new JsonNode(jsonString)
Nous devons donc examiner la classe JsonNode . Le constructeur prend une chaîne représentant le JSON à analyser et tente de créer un JSONObject
ou un JSONArray
. Ces objets proviennent de org.json
qui est bien documenté , heureusement.
Il existe une fonctionnalité de sérialisation dans Unirest (probablement apparue après les réponses en 2015 et 2014). Avec la version actuelle 1.4.9, vous pouvez utiliser les méthodes pratiques asObject (Class) et body (Object). Voici un exemple de désérialisation des réponses AWS CloudSearch.
import Java.util.Arrays;
import org.Apache.http.HttpStatus;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.ObjectMapper;
import com.mashape.unirest.http.Unirest;
import com.mashape.unirest.http.exceptions.UnirestException;
public class UnirestExample {
public class Item {
private String full4kurl;
private String previewurl;
private String description;
@Override
public String toString() {
return "{full4kurl:" + full4kurl + ", previewurl:" + previewurl
+ ", description:" + description + "}";
}
}
public class Hit {
private String id;
private Item fields;
@Override
public String toString() {
return "{id:" + id + ", fields:" + fields + "}";
}
}
public class Hits {
private int found;
private int start;
private Hit[] hit;
@Override
public String toString() {
return "{found:" + found + ", start:" + start + ", hit:"
+ Arrays.toString(hit) + "}";
}
}
public class CloudSearchResult {
private Hits hits;
@Override
public String toString() {
return "{hits:" + hits + "}";
}
}
public static final String END_POINT = "AWS CloudSearch URL";
static {
Unirest.setTimeouts(1000, 5000);
Unirest.setObjectMapper(new ObjectMapper() {
private Gson gson = new GsonBuilder().disableHtmlEscaping()
.create();
@Override
public <T> T readValue(String value, Class<T> valueType) {
return gson.fromJson(value, valueType);
}
@Override
public String writeValue(Object value) {
return gson.toJson(value);
}
});
}
public static void main(String[] args) throws UnirestException {
HttpResponse<CloudSearchResult> response = Unirest.post(END_POINT)
.header("Header", "header").body("body")
.asObject(CloudSearchResult.class);
if (response.getStatus() == HttpStatus.SC_OK) {
CloudSearchResult body = response.getBody();
System.out.println(body);
} else {
throw new RuntimeException("Fail to invoke URL ");
}
}
}
Dans une chaîne JSON, deux symboles vous guident tout au long de l'analyse:
{- indique un objet JSON
[- indique un tableau JSON
Lors de l'analyse d'une chaîne JSON, vous devez parcourir ces éléments de manière itérative. Pour comprendre le nombre de JsonObjects et de JsonArrays que vous avez dans votre chaîne et à partir desquels vous devez commencer à analyser, utilisez un outil json-visualizer comme ce site Web . Par exemple, pour votre chaîne, la structure est la suivante:
Comme vous le voyez, l’objet racine est un JSONObject qui consiste en un JSONArray avec trois jsonOnjects. Pour analyser une telle structure, vous pouvez utiliser:
JSONObject jsonobj = new JSONObject(jsonstring);
String result = jsonObject.getString("success");
String error_number = jsonObject.getString("error_number");
String error_message = jsonObject.getString("error_message");
JSON Array jsonarray = jsonobj.getJSONArray();
String[] names = new String[jsonArray.length()];
String[] formattedNames = new String[jsonArray.length()];
for(int i=0;i<jsonArray.length();i++)
{
JSONObject jsonObject = jsonArray.getJSONObject(i);
names [i] = jsonObject.getString("name");
formattedNames [i] = jsonObject.getString("formattedName");
}
Comme la réponse est facilement récupérée sous forme de chaîne, vous pouvez utiliser n'importe quelle bibliothèque JSON de votre choix pour désérialisation si vous ne souhaitez pas parcourir le fichier JSON manuellement. Je suis personnellement attaché au GSON de Google et à sa capacité de mapper facilement votre réponse JSON à un objet que vous créez pour correspondre.
HttpRequest request = Unirest.get(/*your request URI*/)
.headers(/*if needed*/)
.queryString(/*if needed*/);
HttpResponse<JsonNode> jsonResponse = request.asJson();
Gson gson = new Gson();
String responseJSONString = jsonResponse.getBody().toString();
MyResponseObject myObject = gson.fromJson(responseJSONString, String.class);
Vous pouvez récupérer le corps de JsonNode puis convertir le JsonNode en JSONObject pour accéder aux valeurs. Pour accéder aux résultats, vous pouvez le convertir en JSONArray.
import org.json.*;
HttpResponse<JsonNode> request = Unirest.get(URL).header("X-Mashape
Authorization", MASHAPE_AUTH).asJson();
JSONObject responsejson = request.getBody().getObject();
JSONArray results = responsejson.getJSONArray("results");
Ensuite, vous pouvez parcourir chaque résultat JSONObject. Par exemple, pour obtenir le premier objet dans les résultats
JSONObject value = results.getJSONObject(0);
Cela devrait fonctionner comme cela a fonctionné pour moi
System.out.println(request.getBody().getObject().toString(2));
exemple de code
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.JsonNode;
import com.mashape.unirest.http.Unirest;
public class UnirestClient{
public void getQuestions() throws Exception {
HttpResponse<JsonNode> stack= Unirest.get("https://api.stackexchange.com/2.2/questions").
header("accept", "application/json").
queryString("order","desc").
queryString("sort", "creation").
queryString("filter", "default").
queryString("site", "stackoverflow").
asJson();
System.out.println(stack.getBody().getObject().toString(2));
}
public static void main(String args[]) throws Exception {
JavaHTTPAPIClient client = new JavaHTTPAPIClient();
client.getQuestionsUsingUnirest();
}
}
Réponse
{
"quota_max": 300,
"items": [
{
"creation_date": 1477998742,
"tags": [
"javascript",
"spring",
"sockjs",
"spring-js",
"sockjs-tornado"
],
"title": "Sockjs 404 not found",
"link": "http://stackoverflow.com/questions/40358911/sockjs-404-not-found",
"score": 0,
"answer_count": 0,
"owner": {
"display_name": "Sviatlana",
"accept_rate": 71,
"user_type": "registered",
"profile_image": "https://i.stack.imgur.com/J9utH.jpg?s=128&g=1",
"link": "http://stackoverflow.com/users/5288347/sviatlana",
"reputation": 109,
"user_id": 5288347
},
"last_activity_date": 1477998742,
"question_id": 40358911,
"view_count": 2,
"is_answered": false
},
{
"creation_date": 1477998741,
"tags": [
"php",
"html",
"email",
"magento",
"static-block"
],
"title": "Creating a magento email template: custom static block not working",
"link": "http://stackoverflow.com/questions/40358910/creating-a-magento-email-template-custom-static-block-not-working",
"score": 0,
"answer_count": 0,
"owner": {
"display_name": "Elliot",
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/3ca06bfc99ca77598a8c58aa0945bc8a?s=128&d=identicon&r=PG&f=1",
"link": "http://stackoverflow.com/users/6914645/elliot",
"reputation": 3,
"user_id": 6914645
},
"last_activity_date": 1477998741,
"question_id": 40358910,
"view_count": 1,
"is_answered": false
},
{
"creation_date": 1477998733,
"tags": [
"vba",
"random",
"macros",
"numbers",
"PowerPoint"
],
"title": "Random number PowerPoint as slide change",
"link": "http://stackoverflow.com/questions/40358908/random-number-PowerPoint-as-slide-change",
"score": 0,
"answer_count": 0,
"owner": {
"display_name": "Luca ",
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/50594e4723d9c9235a49385e70fdc347?s=128&d=identicon&r=PG&f=1",
"link": "http://stackoverflow.com/users/7099333/luca",
"reputation": 1,
"user_id": 7099333
},
"last_activity_date": 1477998733,
"question_id": 40358908,
"view_count": 2,
"is_answered": false
},
{
"creation_date": 1477998717,
"tags": [
"javascript",
"jquery",
"cordova",
"jquery-mobile"
],
"title": "page redirection happening when Go button is pressed on a textbox (jquery/cordova)",
"link": "http://stackoverflow.com/questions/40358903/page-redirection-happening-when-go-button-is-pressed-on-a-textbox-jquery-cordov",
"score": 0,
"answer_count": 0,
"owner": {
"display_name": "Abhi",
"accept_rate": 58,
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/118f3b090dbf70bbb82dd280ed2f4e24?s=128&d=identicon&r=PG&f=1",
"link": "http://stackoverflow.com/users/5145530/abhi",
"reputation": 536,
"user_id": 5145530
},
"last_activity_date": 1477998717,
"question_id": 40358903,
"view_count": 3,
"is_answered": false
},
{
"creation_date": 1477998684,
"tags": [
"php",
"wordpress",
"for-loop"
],
"title": "Wordpress: looping through alternating post types and outputting featured image",
"link": "http://stackoverflow.com/questions/40358895/wordpress-looping-through-alternating-post-types-and-outputting-featured-image",
"score": 0,
"answer_count": 0,
"owner": {
"display_name": "icabob91",
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/4955d4f2e9bcbdee92ef49ffd76c51d6?s=128&d=identicon&r=PG&f=1",
"link": "http://stackoverflow.com/users/6104799/icabob91",
"reputation": 3,
"user_id": 6104799
},
"last_activity_date": 1477998684,
"question_id": 40358895,
"view_count": 3,
"is_answered": false
},
{
"creation_date": 1477998678,
"tags": [
"python",
"datetime",
"python-3.5",
"timedelta"
],
"title": "datetime difference in python3.5",
"link": "http://stackoverflow.com/questions/40358893/datetime-difference-in-python3-5",
"score": 0,
"answer_count": 0,
"owner": {
"display_name": "gansub",
"accept_rate": 85,
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/ac74b6d927012828dbd79279614f3e58?s=128&d=identicon&r=PG&f=1",
"link": "http://stackoverflow.com/users/4033876/gansub",
"reputation": 237,
"user_id": 4033876
},
"last_activity_date": 1477998678,
"question_id": 40358893,
"view_count": 4,
"is_answered": false
},
{
"creation_date": 1477998668,
"tags": [
"arm",
"tensorflow"
],
"title": "Wipe out dropout operations from TensorFlow graph",
"link": "http://stackoverflow.com/questions/40358892/wipe-out-dropout-operations-from-tensorflow-graph",
"score": 0,
"answer_count": 0,
"owner": {
"display_name": "Dmytro Prylipko",
"accept_rate": 40,
"user_type": "registered",
"profile_image": "https://i.stack.imgur.com/aVfpi.png?s=128&g=1",
"link": "http://stackoverflow.com/users/2641587/dmytro-prylipko",
"reputation": 98,
"user_id": 2641587
},
"last_activity_date": 1477998668,
"question_id": 40358892,
"view_count": 2,
"is_answered": false
},
{
"creation_date": 1477998668,
"tags": [
"c++",
"qt"
],
"title": "Scale a dynamically added widget",
"link": "http://stackoverflow.com/questions/40358891/scale-a-dynamically-added-widget",
"score": 0,
"answer_count": 0,
"owner": {
"display_name": "student",
"accept_rate": 88,
"user_type": "registered",
"profile_image": "https://graph.facebook.com/814890818587238/picture?type=large",
"link": "http://stackoverflow.com/users/4621626/student",
"reputation": 43,
"user_id": 4621626
},
"last_activity_date": 1477998668,
"question_id": 40358891,
"view_count": 3,
"is_answered": false
},
{
"creation_date": 1477998642,
"tags": ["sql"],
"title": "SQL returning different rows based on certain conditions",
"link": "http://stackoverflow.com/questions/40358889/sql-returning-different-rows-based-on-certain-conditions",
"score": 0,
"answer_count": 0,
"owner": {
"display_name": "clueless83",
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/c99db40aa014047b39b6e8222c120d84?s=128&d=identicon&r=PG&f=1",
"link": "http://stackoverflow.com/users/6720789/clueless83",
"reputation": 18,
"user_id": 6720789
},
"last_activity_date": 1477998642,
"question_id": 40358889,
"view_count": 10,
"is_answered": false
},
{
"creation_date": 1477998626,
"tags": [
"angularjs",
"select",
"multiple-select"
],
"title": "Angular: Select multiple in chrome ( in firefox work perfectly)",
"link": "http://stackoverflow.com/questions/40358886/angular-select-multiple-in-chrome-in-firefox-work-perfectly",
"score": 0,
"answer_count": 0,
"owner": {
"display_name": "Enrique Rubio Sanchez",
"user_type": "registered",
"profile_image": "https://lh3.googleusercontent.com/-jKUZPfGsMEY/AAAAAAAAAAI/AAAAAAAAAHY/aisyHc_Xlm4/photo.jpg?sz=128",
"link": "http://stackoverflow.com/users/5496817/enrique-rubio-sanchez",
"reputation": 11,
"user_id": 5496817
},
"last_activity_date": 1477998626,
"question_id": 40358886,
"view_count": 5,
"is_answered": false
},
{
"creation_date": 1477998622,
"tags": [
"c#",
"coloranimation"
],
"title": "Cannot animate the color property because the object is sealed or frozen",
"link": "http://stackoverflow.com/questions/40358884/cannot-animate-the-color-property-because-the-object-is-sealed-or-frozen",
"score": 0,
"answer_count": 0,
"owner": {
"display_name": "Wobbles",
"accept_rate": 63,
"user_type": "registered",
"profile_image": "https://graph.facebook.com/100003846611758/picture?type=large",
"link": "http://stackoverflow.com/users/3797778/wobbles",
"reputation": 1691,
"user_id": 3797778
},
"last_activity_date": 1477998622,
"question_id": 40358884,
"view_count": 3,
"is_answered": false
},
{
"creation_date": 1477998619,
"tags": [
"Paypal",
"laravel-5.2",
"Paypal-rest-sdk"
],
"title": "Integrating Paypal Rest API to laravel 5.2 using anouarabdsslm",
"link": "http://stackoverflow.com/questions/40358882/integrating-Paypal-rest-api-to-laravel-5-2-using-anouarabdsslm",
"score": 0,
"answer_count": 0,
"owner": {
"display_name": "Ankit Jindal",
"user_type": "registered",
"profile_image": "https://graph.facebook.com/100001546390988/picture?type=large",
"link": "http://stackoverflow.com/users/4198180/ankit-jindal",
"reputation": 6,
"user_id": 4198180
},
"last_activity_date": 1477998619,
"question_id": 40358882,
"view_count": 2,
"is_answered": false
},
{
"creation_date": 1477998605,
"tags": [
"decimal",
"dynamics-crm-2016",
"editablegrid"
],
"title": "Dynamcis CRM EditableGrid sdoesn't sets quantity to 0",
"link": "http://stackoverflow.com/questions/40358881/dynamcis-crm-editablegrid-sdoesnt-sets-quantity-to-0",
"score": 0,
"answer_count": 0,
"owner": {
"display_name": "ODE",
"accept_rate": 71,
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/3607bfe0c1a853e890ff5c746e793856?s=128&d=identicon&r=PG&f=1",
"link": "http://stackoverflow.com/users/3332226/ode",
"reputation": 82,
"user_id": 3332226
},
"last_activity_date": 1477998605,
"question_id": 40358881,
"view_count": 2,
"is_answered": false
},
{
"creation_date": 1477998604,
"tags": [
"reporting-services",
"parameters",
"mdx"
],
"title": "MDX (SSRS) Parameter subset",
"link": "http://stackoverflow.com/questions/40358880/mdx-ssrs-parameter-subset",
"score": 0,
"answer_count": 0,
"owner": {
"display_name": "user2181700",
"accept_rate": 67,
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/a973bbc5607eb4bf001c1d0587c2035d?s=128&d=identicon&r=PG",
"link": "http://stackoverflow.com/users/2181700/user2181700",
"reputation": 40,
"user_id": 2181700
},
"last_activity_date": 1477998604,
"question_id": 40358880,
"view_count": 2,
"is_answered": false
},
{
"creation_date": 1477998588,
"tags": [
"bash",
"chef-recipe"
],
"title": "How can I loop through bash routine in Chef?",
"link": "http://stackoverflow.com/questions/40358877/how-can-i-loop-through-bash-routine-in-chef",
"score": 0,
"answer_count": 0,
"owner": {
"display_name": "user5241806",
"accept_rate": 38,
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/f93135e0156fd5d3ecba4935a42c0c47?s=128&d=identicon&r=PG&f=1",
"link": "http://stackoverflow.com/users/5241806/user5241806",
"reputation": 63,
"user_id": 5241806
},
"last_activity_date": 1477998588,
"question_id": 40358877,
"view_count": 3,
"is_answered": false
},
{
"creation_date": 1477998584,
"tags": [
"entity-framework",
"asp.net-web-api",
"unity-container"
],
"title": "Dependency injection not working in web api call",
"link": "http://stackoverflow.com/questions/40358875/dependency-injection-not-working-in-web-api-call",
"score": 0,
"answer_count": 0,
"owner": {
"display_name": "Tom",
"accept_rate": 71,
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/71cd701f6826481858ee299f68f3205a?s=128&d=identicon&r=PG&f=1",
"link": "http://stackoverflow.com/users/4607841/tom",
"reputation": 94,
"user_id": 4607841
},
"last_activity_date": 1477998584,
"question_id": 40358875,
"view_count": 5,
"is_answered": false
},
{
"creation_date": 1477998573,
"tags": [
"c++",
"windows",
"process",
"kill",
"termination"
],
"title": "How to prevent a windows application from being killed/terminate or stop",
"link": "http://stackoverflow.com/questions/40358872/how-to-prevent-a-windows-application-from-being-killed-terminate-or-stop",
"score": 0,
"answer_count": 0,
"owner": {
"display_name": "Ankush Dhingra",
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/136386aece9fd21861cb2b42f24f81b6?s=128&d=identicon&r=PG&f=1",
"link": "http://stackoverflow.com/users/7099310/ankush-dhingra",
"reputation": 1,
"user_id": 7099310
},
"last_activity_date": 1477998573,
"question_id": 40358872,
"view_count": 6,
"is_answered": false
},
{
"creation_date": 1477998556,
"tags": [
"python",
"Azure",
"arm",
"Azure-sdk-python"
],
"title": "Azure python sdk for VM Resource Monitoring",
"link": "http://stackoverflow.com/questions/40358870/Azure-python-sdk-for-vm-resource-monitoring",
"score": 0,
"answer_count": 0,
"owner": {
"display_name": "KMG",
"accept_rate": 26,
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/3632d43837fe92fda15ddf3b6ad5a8c2?s=128&d=identicon&r=PG&f=1",
"link": "http://stackoverflow.com/users/3524468/kmg",
"reputation": 158,
"user_id": 3524468
},
"last_activity_date": 1477998556,
"question_id": 40358870,
"view_count": 3,
"is_answered": false
},
{
"creation_date": 1477998521,
"tags": [
"javascript",
"arrays",
"for-loop"
],
"title": "JavaScript array 2 dimension for loop",
"link": "http://stackoverflow.com/questions/40358865/javascript-array-2-dimension-for-loop",
"score": 0,
"answer_count": 0,
"owner": {
"display_name": "Rayan Suryadikara",
"accept_rate": 80,
"user_type": "registered",
"profile_image": "https://graph.facebook.com/959947287411964/picture?type=large",
"link": "http://stackoverflow.com/users/5355995/rayan-suryadikara",
"reputation": 28,
"user_id": 5355995
},
"last_activity_date": 1477998521,
"question_id": 40358865,
"view_count": 24,
"is_answered": false
},
{
"creation_date": 1477998512,
"tags": [
"javascript",
"user-interface",
"kendo-ui",
"grid"
],
"title": "How to set the number format for hyperlinks in kendo grid column",
"link": "http://stackoverflow.com/questions/40358863/how-to-set-the-number-format-for-hyperlinks-in-kendo-grid-column",
"score": 0,
"answer_count": 0,
"owner": {
"display_name": "Harsha vardhan Reddy",
"user_type": "registered",
"profile_image": "https://lh6.googleusercontent.com/-tnuvSHlig1U/AAAAAAAAAAI/AAAAAAAAAdU/pBo7JDjmBpM/photo.jpg?sz=128",
"link": "http://stackoverflow.com/users/6323557/harsha-vardhan-reddy",
"reputation": 1,
"user_id": 6323557
},
"last_activity_date": 1477998512,
"question_id": 40358863,
"view_count": 2,
"is_answered": false
},
{
"creation_date": 1477998507,
"tags": [
"Android",
"achartengine"
],
"title": "aChartEngine; getCurrentSeriesAndPoint returns null",
"link": "http://stackoverflow.com/questions/40358862/achartengine-getcurrentseriesandpoint-returns-null",
"score": 0,
"answer_count": 0,
"owner": {
"display_name": "Hyunin",
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/ddaf10ed143d2d44f9a1de00dc6465ec?s=128&d=identicon&r=PG&f=1",
"link": "http://stackoverflow.com/users/7099269/hyunin",
"reputation": 1,
"user_id": 7099269
},
"last_activity_date": 1477998507,
"question_id": 40358862,
"view_count": 2,
"is_answered": false
},
{
"creation_date": 1477998499,
"tags": [
"c#",
"Selenium",
"Selenium-chromedriver"
],
"title": "Uploading a file with Selenium C#",
"link": "http://stackoverflow.com/questions/40358860/uploading-a-file-with-Selenium-c",
"score": 0,
"answer_count": 0,
"owner": {
"display_name": "Hoverlord",
"user_type": "registered",
"profile_image": "https://lh4.googleusercontent.com/-5spNCjwaRtU/AAAAAAAAAAI/AAAAAAAADUo/CWI4U9m0VWw/photo.jpg?sz=128",
"link": "http://stackoverflow.com/users/7099290/hoverlord",
"reputation": 1,
"user_id": 7099290
},
"last_activity_date": 1477998499,
"question_id": 40358860,
"view_count": 4,
"is_answered": false
},
{
"creation_date": 1477998487,
"tags": [
"javascript",
"unit-testing",
"angular2",
"TypeScript",
"jasmine"
],
"title": "Angular 2 with jasmine: test component with injected service",
"link": "http://stackoverflow.com/questions/40358858/angular-2-with-jasmine-test-component-with-injected-service",
"score": 0,
"answer_count": 0,
"owner": {
"display_name": "DavidL",
"accept_rate": 81,
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/ce4583fa48bbd2e762ba0a9aaeab7909?s=128&d=identicon&r=PG&f=1",
"link": "http://stackoverflow.com/users/4656551/davidl",
"reputation": 483,
"user_id": 4656551
},
"last_activity_date": 1477998487,
"question_id": 40358858,
"view_count": 5,
"is_answered": false
},
{
"creation_date": 1477998486,
"tags": [
"c#",
"jquery",
"ajax",
"routes",
"asp.net-core-mvc"
],
"title": "asp.net core id value in route doesn't work with ajax",
"link": "http://stackoverflow.com/questions/40358857/asp-net-core-id-value-in-route-doesnt-work-with-ajax",
"last_edit_date": 1477998683,
"score": 0,
"answer_count": 0,
"owner": {
"display_name": "Anton Toshik",
"accept_rate": 86,
"user_type": "registered",
"profile_image": "https://graph.facebook.com/1259984217361793/picture?type=large",
"link": "http://stackoverflow.com/users/5784635/anton-toshik",
"reputation": 27,
"user_id": 5784635
},
"last_activity_date": 1477998683,
"question_id": 40358857,
"view_count": 9,
"is_answered": false
},
{
"creation_date": 1477998481,
"tags": [
"python",
"string",
"python-3.x",
"machine-learning",
"string-matching"
],
"title": "how to generate a set of similar strings in python",
"link": "http://stackoverflow.com/questions/40358855/how-to-generate-a-set-of-similar-strings-in-python",
"score": 0,
"answer_count": 0,
"owner": {
"display_name": "daiyue",
"accept_rate": 82,
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/55fd0f7d95a4938975026ff886c3a563?s=128&d=identicon&r=PG",
"link": "http://stackoverflow.com/users/766708/daiyue",
"reputation": 806,
"user_id": 766708
},
"last_activity_date": 1477998481,
"question_id": 40358855,
"view_count": 8,
"is_answered": false
},
{
"creation_date": 1477998477,
"tags": [
"Java",
"mysql",
"swing",
"connection-pooling"
],
"title": "Does Connection Pooling makes Java Swing Application works faster for remote MySQL database",
"link": "http://stackoverflow.com/questions/40358852/does-connection-pooling-makes-Java-swing-application-works-faster-for-remote-mys",
"score": 0,
"answer_count": 0,
"owner": {
"display_name": "user2200561",
"accept_rate": 25,
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/1b7fb8ee134a1d1fdb25350e74c3322c?s=128&d=identicon&r=PG",
"link": "http://stackoverflow.com/users/2200561/user2200561",
"reputation": 8,
"user_id": 2200561
},
"last_activity_date": 1477998477,
"question_id": 40358852,
"view_count": 5,
"is_answered": false
},
{
"creation_date": 1477998469,
"tags": [
"python",
"Apache",
"hadoop",
"mapreduce",
"Apache-pig"
],
"title": "Apache Pig - nested FOREACH over same relation",
"link": "http://stackoverflow.com/questions/40358849/Apache-pig-nested-foreach-over-same-relation",
"score": 0,
"answer_count": 0,
"owner": {
"display_name": "user2817219",
"accept_rate": 60,
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/89b91c209b145ead1e1a4309fc048afc?s=128&d=identicon&r=PG&f=1",
"link": "http://stackoverflow.com/users/2817219/user2817219",
"reputation": 65,
"user_id": 2817219
},
"last_activity_date": 1477998469,
"question_id": 40358849,
"view_count": 4,
"is_answered": false
},
{
"creation_date": 1477998456,
"tags": [
"mysql",
"laravel-5",
"eloquent"
],
"title": "column overridden by another column with same name when using join method in eloquent",
"link": "http://stackoverflow.com/questions/40358846/column-overridden-by-another-column-with-same-name-when-using-join-method-in-elo",
"score": 0,
"answer_count": 0,
"owner": {
"display_name": "Mazino S Ukah",
"accept_rate": 100,
"user_type": "registered",
"profile_image": "https://graph.facebook.com/933943226659646/picture?type=large",
"link": "http://stackoverflow.com/users/5746074/mazino-s-ukah",
"reputation": 125,
"user_id": 5746074
},
"last_activity_date": 1477998456,
"question_id": 40358846,
"view_count": 5,
"is_answered": false
},
{
"creation_date": 1477998428,
"tags": [
"javascript",
"http",
"caching",
"browser"
],
"title": "Tell the browser to drop cache of image",
"link": "http://stackoverflow.com/questions/40358839/tell-the-browser-to-drop-cache-of-image",
"score": 0,
"answer_count": 0,
"owner": {
"display_name": "php_nub_qq",
"accept_rate": 86,
"user_type": "registered",
"profile_image": "https://i.stack.imgur.com/daMab.jpg?s=128&g=1",
"link": "http://stackoverflow.com/users/2415293/php-nub-qq",
"reputation": 5811,
"user_id": 2415293
},
"last_activity_date": 1477998428,
"question_id": 40358839,
"view_count": 8,
"is_answered": false
},
{
"creation_date": 1477998422,
"tags": [
"ios",
"certificate",
"keychain",
"p12"
],
"title": "Keychain asking password for importing p12 but i didn't give password",
"link": "http://stackoverflow.com/questions/40358836/keychain-asking-password-for-importing-p12-but-i-didnt-give-password",
"score": 0,
"answer_count": 0,
"owner": {
"display_name": "Olcay Erta?",
"accept_rate": 92,
"user_type": "registered",
"profile_image": "https://www.gravatar.com/avatar/f164c6c3b709c97862a0d14f7725830b?s=128&d=identicon&r=PG",
"link": "http://stackoverflow.com/users/614065/olcay-erta%c5%9f",
"reputation": 1129,
"user_id": 614065
},
"last_activity_date": 1477998422,
"question_id": 40358836,
"view_count": 2,
"is_answered": false
}
],
"has_more": true,
"quota_remaining": 298
}
// try this way,hope this will help you...
String respone = "{\n" +
" \"success\": \"1\",\n" +
" \"error_number\": \"\",\n" +
" \"error_message\": \"\",\n" +
" \"results\": [\n" +
" {\n" +
" \"name\": \"name1\",\n" +
" \"formatedName\": \"Name 1\"\n" +
" },\n" +
" {\n" +
" \"name\": \"testtesttest\",\n" +
" \"formatedName\": \"Test Test Test\"\n" +
" },\n" +
" {\n" +
" \"name\": \"nametest2\",\n" +
" \"formatedName\": \"Name Test 2\"\n" +
" },\n" +
" {\n" +
" \"name\": \"nametest3\",\n" +
" \"formatedName\": \"Name Test 3\"\n" +
" }\n" +
" ]\n" +
"}";
try{
JSONObject responeJson = new JSONObject(respone);
if(responeJson.getString("success").equals("1")){
JSONArray jsonArray = responeJson.getJSONArray("results");
for (int i=0;i<jsonArray.length();i++){
System.out.println("Name : "+jsonArray.getJSONObject(i).getString("name"));
System.out.println("FormatedName : "+jsonArray.getJSONObject(i).getString("formatedName"));
}
}else{
Toast.makeText(this,responeJson.getString("error_message"),Toast.LENGTH_SHORT).show();
}
}catch (Throwable e){
e.printStackTrace();
}