Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: J2EE: JSON-ongelma

Sivun loppuun

walkout_ [28.02.2017 13:29:12]

#

Hei,

Tämä koodi ei toimi. Miten korjata?

if (jsonDependenciesQuery.getJSONArray("added")==null) {

				jsonDependenciesArray = jsonDependenciesQuery.getJSONArray("removed");

.. koodia ..

} else {

.. koodia ..

}

Delphi_Object [28.02.2017 15:24:27]

#

Asiaa paremmin tuntematta, mutta tulisiko olla muodossa: jsonDependenciesArray[]

Metabolix [28.02.2017 18:22:12]

#

Oletan, että käytössä on javax.json ja että noilla muuttujilla on järkevät tyypit. Yritä jatkossa kysyä niin, että kysymyksessä on kaikki ratkaisuun olennainen tieto.

Auttaa, jos esim. kirjoittaa metodien nimet oikein: Json (esim. getJsonArray) eikä JSON.

Ongelma varmaan löytyisi myös virheilmoituksia katsomalla.

Delphi_Object kirjoitti:

Asiaa paremmin tuntematta, mutta tulisiko olla muodossa: jsonDependenciesArray[]

Suosittelen jättämään väliin kysymykset, joista ei ole mitään hajua.

walkout_ [28.02.2017 18:49:48]

#

Hei,

Koodista ei tule mitään virheilmoitusta.

Tarkoitus on siis JIRA:ssa poista issue linkitys functiolla:
https://docs.atlassian.com/jira/server/com/atlassian/jira/issue/link/IssueLinkManager.html­#removeIssueLink-com.atlassian.jira.issue.link.IssueLink-com.atlassian.jira.user.ApplicationUser-

walkout_ [01.03.2017 07:17:37]

#

Eli siis jos kerran kysymkseni on epäselvä niin yritän nyt selventää sitä.

Eli JavaScript-käyttöliittymäframeworkki postittaa palelimelle seuraavat Json-koodit:

{"type":"sync","requestId":1488179775266,"dependencies":{"removed":[{"Id":11902}]}}

{"type":"sync","requestId":1488180122275,"dependencies":{"added":[{"$PhantomId":"ext-record-549","From":15505,"To":15509,"Type":2,"Lag":0,"Cls":"","LagUnit":"d"}]},"tasks":{"updated":[{"EndDate":"2017-03-17T16:38:25","Duration":4.693344907407408,"StartDate":"2017-03-13T00:00:00","Id":15509,"parentId":null}]}}

Eli pitäisi tedä jos-lause, joka tunnistaa kumpi Json-koodeista on postitettu.

Grez [01.03.2017 18:08:09]

#

Millä tavalla tuo koodisi siis ei toimi?

walkout_ [02.03.2017 09:41:45]

#

Grez kirjoitti:

Millä tavalla tuo koodisi siis ei toimi?

En tiedä kun en saa noita System.out.println("Removed works!"); debuggauksia näkymään catalina.out-tiedostossa. Mutta palvelin vastaa tyhjällä JSON-koodilla.

try {

			jsonDependenciesQuery = new JSONObject(query);
			jsonDependenciesQuery = jsonDependenciesQuery.getJSONObject("dependencies");

			if (jsonDependenciesQuery.getJSONArray("added")==null) {

				System.out.println("Removed works!");

				jsonDependenciesArray = jsonDependenciesQuery.getJSONArray("removed");

				for (int iii = 0; iii < jsonDependenciesArray.length(); iii++) {

					try {

					jsonDependenciesQuery = jsonDependenciesArray.getJSONObject(iii);
					long il = jsonDependenciesQuery.getLong("Id");
					System.out.println(il);
					IssueLink issueLink = issueLinkManager.getIssueLink(il);
					issueLinkManager.removeIssueLink(issueLink, targetUser);

					} catch (IllegalArgumentException iae) {
					iae.printStackTrace();
					System.out.println("Got an JSONException: " + iae.getCause());
					value = Boolean.valueOf(!"false"
							.equalsIgnoreCase((String) "false"));
				    }

				}

				    value = Boolean.valueOf(!"false"
							.equalsIgnoreCase((String) "true"));



			} else {

		    System.out.println("Added works!");

			jsonDependenciesArray = jsonDependenciesQuery.getJSONArray("added");

		for (int ii = 0; ii < jsonDependenciesArray.length(); ii++) {
			    try {

					jsonDependenciesQuery = jsonDependenciesArray.getJSONObject(ii);
					from = jsonDependenciesQuery.getLong("From");
					to = jsonDependenciesQuery.getLong("To");
					type = jsonDependenciesQuery.getLong("Type");

					if (type==3) {

								//Finish-to-Finish
								issueLinkType =  issueLinkTypeManager.getIssueLinkTypesByName("Finish-to-Finish");

								for (Iterator dependenciesIterator=issueLinkType.iterator(); dependenciesIterator.hasNext();) {
     						    	IssueLinkType dependency = (IssueLinkType) dependenciesIterator.next();
									linkTypeId = dependency.getId();
								}


					} else if (type==2) {

								//Finish-to-Start
								issueLinkType =  issueLinkTypeManager.getIssueLinkTypesByName("Finish-to-Start");
								for (Iterator dependenciesIterator=issueLinkType.iterator(); dependenciesIterator.hasNext();) {
     						    	IssueLinkType dependency = (IssueLinkType) dependenciesIterator.next();
									linkTypeId = dependency.getId();
								}

					} else if (type==1) {

						       //Start-to-Finish
							   issueLinkType =  issueLinkTypeManager.getIssueLinkTypesByName("Start-to-Finish");
							   for (Iterator dependenciesIterator=issueLinkType.iterator(); dependenciesIterator.hasNext();) {
     						    	IssueLinkType dependency = (IssueLinkType) dependenciesIterator.next();
									linkTypeId = dependency.getId();
								}

					} else if (type==0) {

								//Start-to-Start
								issueLinkType =  issueLinkTypeManager.getIssueLinkTypesByName("Start-to-Start");
							    for (Iterator dependenciesIterator=issueLinkType.iterator(); dependenciesIterator.hasNext();) {
     						    	IssueLinkType dependency = (IssueLinkType) dependenciesIterator.next();
									linkTypeId = dependency.getId();
								}
					} else {

					}

				List<IssueLink> allOutIssueLink = ComponentAccessor.getIssueLinkManager().getOutwardLinks(from);

				for (Iterator<IssueLink> outIterator = allOutIssueLink.iterator(); outIterator.hasNext();) {
				    IssueLink issueLink = (IssueLink) outIterator.next();
					sequence = issueLink.getSequence();
				}

				try {
					sequence = sequence + 1;
				    issueLinkManager.createIssueLink(from, to, linkTypeId, sequence, targetUser);
				} catch (CreateException err) {
					err.printStackTrace();
					System.out.println("Got an JSONException: " + err.getCause());
					value = Boolean.valueOf(!"false"
							.equalsIgnoreCase((String) "false"));
					//System.out.println("Got an ParseException: " + e.getCause());
					msg = "Got an JSONException: " + err.getCause();
				}

			} catch (JSONException err) {
        		err.printStackTrace();
        		System.out.println("Got an JSONException: " + err.getCause());
				value = Boolean.valueOf(!"false"
						.equalsIgnoreCase((String) "false"));
				//System.out.println("Got an ParseException: " + e.getCause());
				msg = "Got an JSONException: " + err.getCause();
            }

		  }

		}

		} catch (JSONException err) {
        	//err.printStackTrace();
        	//System.out.println("Got an JSONException: " + err.getCause());
			//value = Boolean.valueOf(!"false"
						//.equalsIgnoreCase((String) "false"));
				//System.out.println("Got an ParseException: " + e.getCause());
			//msg = "Got an JSONException: " + err.getCause();
        }

walkout_ [02.03.2017 11:58:24]

#

Muutin nyt koodia a vain Issue Linkkien deletointi toimii mutta muut ei toimi. Eli jsonDependenciesQuery.getJSONArray("removed")==null koodilla ei ole null-arvoa.

try {

			jsonDependenciesQuery = new JSONObject(query);
			jsonDependenciesQuery = jsonDependenciesQuery.getJSONObject("dependencies");

			if (jsonDependenciesQuery.getJSONArray("removed")!=null) {

				System.out.println("Removed works!");

				jsonDependenciesArray = jsonDependenciesQuery.getJSONArray("removed");

				for (int iii = 0; iii < jsonDependenciesArray.length(); iii++) {

					try {

					jsonDependenciesQuery = jsonDependenciesArray.getJSONObject(iii);
					long il = jsonDependenciesQuery.getLong("Id");
					System.out.println(il);
					IssueLink issueLink = issueLinkManager.getIssueLink(il);
					issueLinkManager.removeIssueLink(issueLink, targetUser);
					value = Boolean.valueOf(!"false"
							.equalsIgnoreCase((String) "true"));

					} catch (IllegalArgumentException iae) {
					iae.printStackTrace();
					System.out.println("Got an JSONException: " + iae.getCause());
					value = Boolean.valueOf(!"false"
							.equalsIgnoreCase((String) "false"));
							msg = "Got an JSONException: " + iae.getCause();
				    }

				}

			} else if (jsonDependenciesQuery.getJSONArray("removed")==null) {

		    System.out.println("Added works!");

			jsonDependenciesArray = jsonDependenciesQuery.getJSONArray("added");

		for (int ii = 0; ii < jsonDependenciesArray.length(); ii++) {
			    try {

					jsonDependenciesQuery = jsonDependenciesArray.getJSONObject(ii);
					from = jsonDependenciesQuery.getLong("From");
					to = jsonDependenciesQuery.getLong("To");
					type = jsonDependenciesQuery.getLong("Type");

					if (type==3) {

								//Finish-to-Finish
								issueLinkType =  issueLinkTypeManager.getIssueLinkTypesByName("Finish-to-Finish");

								for (Iterator dependenciesIterator=issueLinkType.iterator(); dependenciesIterator.hasNext();) {
     						    	IssueLinkType dependency = (IssueLinkType) dependenciesIterator.next();
									linkTypeId = dependency.getId();
								}


					} else if (type==2) {

								//Finish-to-Start
								issueLinkType =  issueLinkTypeManager.getIssueLinkTypesByName("Finish-to-Start");
								for (Iterator dependenciesIterator=issueLinkType.iterator(); dependenciesIterator.hasNext();) {
     						    	IssueLinkType dependency = (IssueLinkType) dependenciesIterator.next();
									linkTypeId = dependency.getId();
								}

					} else if (type==1) {

						       //Start-to-Finish
							   issueLinkType =  issueLinkTypeManager.getIssueLinkTypesByName("Start-to-Finish");
							   for (Iterator dependenciesIterator=issueLinkType.iterator(); dependenciesIterator.hasNext();) {
     						    	IssueLinkType dependency = (IssueLinkType) dependenciesIterator.next();
									linkTypeId = dependency.getId();
								}

					} else if (type==0) {

								//Start-to-Start
								issueLinkType =  issueLinkTypeManager.getIssueLinkTypesByName("Start-to-Start");
							    for (Iterator dependenciesIterator=issueLinkType.iterator(); dependenciesIterator.hasNext();) {
     						    	IssueLinkType dependency = (IssueLinkType) dependenciesIterator.next();
									linkTypeId = dependency.getId();
								}
					} else {

					}

				List<IssueLink> allOutIssueLink = ComponentAccessor.getIssueLinkManager().getOutwardLinks(from);

				for (Iterator<IssueLink> outIterator = allOutIssueLink.iterator(); outIterator.hasNext();) {
				    IssueLink issueLink = (IssueLink) outIterator.next();
					sequence = issueLink.getSequence();
				}

				try {
					sequence = sequence + 1;
				    issueLinkManager.createIssueLink(from, to, linkTypeId, sequence, targetUser);
				} catch (CreateException err) {
					err.printStackTrace();
					System.out.println("Got an JSONException: " + err.getCause());
					value = Boolean.valueOf(!"false"
							.equalsIgnoreCase((String) "false"));
					//System.out.println("Got an ParseException: " + e.getCause());
					msg = "Got an JSONException: " + err.getCause();
				}

			} catch (JSONException err) {
        		err.printStackTrace();
        		System.out.println("Got an JSONException: " + err.getCause());
				value = Boolean.valueOf(!"false"
						.equalsIgnoreCase((String) "false"));
				//System.out.println("Got an ParseException: " + e.getCause());
				msg = "Got an JSONException: " + err.getCause();
            }

		  }

		} else {

		}

		} catch (JSONException err) {
        	//err.printStackTrace();
        	//System.out.println("Got an JSONException: " + err.getCause());
			value = Boolean.valueOf(!"false"
						.equalsIgnoreCase((String) "false"));
				//System.out.println("Got an ParseException: " + e.getCause());
			msg = "Got an JSONException: " + err.getCause();
        }

        try {

        json = new JSONObject()
        .put("success", value)
        .put("message", msg)
        .toString();

        } catch (JSONException err) {
        	err.printStackTrace();
        	System.out.println("Got an JSONException: " + err.getCause());
        }

		resp.setContentType("application/json");
		resp.getWriter().write(json);
        resp.getWriter().close();

    }

walkout_ [03.03.2017 12:17:20]

#

Sain nyt koodin toimimaan. Kiitos siitä, että yrititte auttaa..

groovyb [03.03.2017 12:40:19]

#

koititko debugata koodia lainkaan? Jos siis et tiedä miten koodisi todellisuudessa käyttäytyy, vaan olet konsoliviestien varassa. Debugilla tarkoitan siis sitä, että reaaliaikaisesti seurataan koodirivien suoritusta ohjelmointityökalullasi (Mitä sitten IDE:nä käytätkään, Eclipseä jne).

walkout_ [03.03.2017 12:51:53]

#

groovyb kirjoitti:

(03.03.2017 12:40:19): koititko debugata koodia lainkaan? Jos siis et...

Siis tämä on Tomcat-sovellus joten catalina.out-tiedostoon pitää nk. Dabukkaus tulostaa. Joo kyllä debukkasin.

groovyb [03.03.2017 13:07:36]

#

...
Ei tarvitse. Kyllä niitä servlettejä voi ihan tavallisesti debugata ilman mitään printtaamisia. Surkea video tämä seuraava, mutta ihan kelaamalla jo näin että kyllä siellä ihan normaalisti debugataan breakpointeilla. Linkki: Youtube

Metabolix [03.03.2017 19:04:45]

#

Ihan googlettamalla Atlassian JSONObject löytyy dokumentaatiota, jonka mukaan puuttuvan arvon hakemisesta heitetään poikkeus (JSONException) eikä palauteta null-arvoa. Olisiko tällä vaikutusta? Kannattaisiko tarkastaa arvon olemassaolo ensin isNull-metodilla?

Tykkään myös tuosta toistuvasta pätkästä:

value = Boolean.valueOf(!"false"
			.equalsIgnoreCase((String) "false"));

Onnea urallasi!


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta