Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Exception in thread "main" com.github.underscore.lodash.Json$ParseException: Expected value at 12:4 #234

Closed
javaHelper opened this issue Dec 27, 2019 · 10 comments
Labels

Comments

@javaHelper
Copy link

javaHelper commented Dec 27, 2019

How to convert below JSON to XML ?

Error

Exception in thread "main" com.github.underscore.lodash.Json$ParseException: Expected value at 12:4
	at com.github.underscore.lodash.Json$JsonParser.error(Json.java:813)
	at com.github.underscore.lodash.Json$JsonParser.expected(Json.java:806)
	at com.github.underscore.lodash.Json$JsonParser.readValue(Json.java:535)
	at com.github.underscore.lodash.Json$JsonParser.readArray(Json.java:548)
	at com.github.underscore.lodash.Json$JsonParser.readValue(Json.java:519)
	at com.github.underscore.lodash.Json$JsonParser.readObject(Json.java:572)
	at com.github.underscore.lodash.Json$JsonParser.readValue(Json.java:521)
	at com.github.underscore.lodash.Json$JsonParser.readObject(Json.java:572)
	at com.github.underscore.lodash.Json$JsonParser.readValue(Json.java:521)
	at com.github.underscore.lodash.Json$JsonParser.parse(Json.java:500)
	at com.github.underscore.lodash.Json.fromJson(Json.java:872)
	at com.github.underscore.lodash.U.fromJson(U.java:2027)
	at com.example.JsonToXml2.main(JsonToXml2.java:60)
public class JsonToXml2 {
	public static void main(String[] args) {
		
		String response = "<FinalResponse xmlns:ns5=\"urn:mybay.com:enterprise:schemas:common:elements\">\r\n" + 
				"   <ns5:Type>SUCCESS</ns5:Type>\r\n" + 
				"   <ns5:Code>0</ns5:Code>\r\n" + 
				"</FinalResponse>";
		
		String xml ="<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">"
		        + "   <soapenv:Header/>"
		        + "   <soapenv:Body>"
		        + "<getMyData xmlns:ns10=\"urn:mybay.com:dms:wsdls:Visit\" xmlns:ns5=\"urn:mybay.com:enterprise:schemas:common:elements\" xmlns:ns6=\"urn:mybay.com:enterprise:schemas:Visit\" xmlns:ns7=\"urn:mybay.com:dms:schemas:Visit\" xmlns:ns8=\"urn:mybay.com:enterprise:schemas:account\">"
		        + "<Visit>"
		        + "<item>"
		        + "</item>"
		        + "</Visit>"
		        + "</getMyData>"
		        + response
		        + "</soapenv:Body>"
		        + "</soapenv:Envelope>";
		
		Map<String, Object> map = (Map<String, Object>) U.fromXml(xml);
		
		
		Map<String, Object> responsemap = (Map<String, Object>) U.fromXml(response);
		
		
	    String json = "{\r\n" + 
	    		"  \"_embedded\": {\r\n" + 
	    		"    \"employeeDetails\": [\r\n" + 
	    		"      {\r\n" + 
	    		"        \"employeeNumber\": \"100\",\r\n" + 
	    		"        \"status\": \"A\"\r\n" + 
	    		"      },\r\n" + 
	    		"      {\r\n" + 
	    		"        \"billingNum\": \"200\",\r\n" + 
	    		"        \"status\": \"A\"\r\n" + 
	    		"      },\r\n" + 
	    		"    ]\r\n" + 
	    		"  },\r\n" + 
	    		"  \"_links\": {\r\n" + 
	    		"    \"self\": {\r\n" + 
	    		"      \"href\": \"/employee/100/employees\"\r\n" + 
	    		"    }\r\n" + 
	    		"  },\r\n" + 
	    		"  \"page\": {\r\n" + 
	    		"    \"size\": 25,\r\n" + 
	    		"    \"totalElements\": 11,\r\n" + 
	    		"    \"totalPages\": 1,\r\n" + 
	    		"    \"number\": 0\r\n" + 
	    		"  }\r\n" + 
	    		"}";
	    List<Object> list = (List<Object>) U.fromJson(json);
	    U.set(map, "soapenv:Envelope.soapenv:Body.getMyData.Visit.item", list);
	    System.out.println(U.toXml(map));
	}
}
@javadev
Copy link
Owner

javadev commented Dec 27, 2019

Hi,

I think \r\n is not valid json characters.

@javadev javadev closed this as completed Dec 27, 2019
@javaHelper
Copy link
Author

No even if I removed those, things doesn't works. Could you please try ?

@javaHelper
Copy link
Author

javaHelper commented Dec 27, 2019

Although I used I see errors.

String json = "{\"_embedded\":{\"employeeDetails\":[{\"employeeNumber\":\"100\",\"status\":\"A\"},{\"billingNum\":\"200\",\"status\":\"A\"},]},\"_links\":{\"self\":{\"href\":\"/employee/100/employees\"}},\"page\":{\"size\":25,\"totalElements\":11,\"totalPages\":1,\"number\":0}}";

@javadev
Copy link
Owner

javadev commented Dec 27, 2019

I fixed json:

{
   "_embedded": {
      "employeeDetails": [
         {
            "employeeNumber": "100",
            "status": "A"
         },
         {
            "billingNum": "200",
            "status": "A"
         }
      ]
   },
   "_links": {
      "self": {
         "href": "/employee/100/employees"
      }
   },
   "page": {
      "size": 25,
      "totalElements": 11,
      "totalPages": 1,
      "number": 0
   }
}

Or java code:

String json = "{\n"
						+ "   \"_embedded\": {\n"
						+ "      \"employeeDetails\": [\n"
						+ "         {\n"
						+ "            \"employeeNumber\": \"100\",\n"
						+ "            \"status\": \"A\"\n"
						+ "         },\n"
						+ "         {\n"
						+ "            \"billingNum\": \"200\",\n"
						+ "            \"status\": \"A\"\n"
						+ "         }\n"
						+ "      ]\n"
						+ "   },\n"
						+ "   \"_links\": {\n"
						+ "      \"self\": {\n"
						+ "         \"href\": \"/employee/100/employees\"\n"
						+ "      }\n"
						+ "   },\n"
						+ "   \"page\": {\n"
						+ "      \"size\": 25,\n"
						+ "      \"totalElements\": 11,\n"
						+ "      \"totalPages\": 1,\n"
						+ "      \"number\": 0\n"
						+ "   }\n"
						+ "}";

@javaHelper
Copy link
Author

Hi, What did you change in the JSON? With the above code is working fine now ?

@javaHelper
Copy link
Author

Could you please share complete source code ?

@javadev
Copy link
Owner

javadev commented Dec 27, 2019

Here you are:

import com.github.underscore.lodash.U;
import java.util.*;

public class JsonToXml2 {
	public static void main(String[] args) {
		
		String response = "<FinalResponse xmlns:ns5=\"urn:mybay.com:enterprise:schemas:common:elements\">\r\n" + 
				"   <ns5:Type>SUCCESS</ns5:Type>\r\n" + 
				"   <ns5:Code>0</ns5:Code>\r\n" + 
				"</FinalResponse>";
		
		String xml ="<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">"
		        + "   <soapenv:Header/>"
		        + "   <soapenv:Body>"
		        + "<getMyData xmlns:ns10=\"urn:mybay.com:dms:wsdls:Visit\" xmlns:ns5=\"urn:mybay.com:enterprise:schemas:common:elements\" xmlns:ns6=\"urn:mybay.com:enterprise:schemas:Visit\" xmlns:ns7=\"urn:mybay.com:dms:schemas:Visit\" xmlns:ns8=\"urn:mybay.com:enterprise:schemas:account\">"
		        + "<Visit>"
		        + "<item>"
		        + "</item>"
		        + "</Visit>"
		        + "</getMyData>"
		        + response
		        + "</soapenv:Body>"
		        + "</soapenv:Envelope>";
		
		Map<String, Object> map = (Map<String, Object>) U.fromXml(xml);
		
		
		Map<String, Object> responsemap = (Map<String, Object>) U.fromXml(response);
		
		
	    String json = "{" + 
	    		"  \"_embedded\": {" + 
	    		"    \"employeeDetails\": [" + 
	    		"      {" + 
	    		"        \"employeeNumber\": \"100\"," + 
	    		"        \"status\": \"A\"" + 
	    		"      }," + 
	    		"      {" + 
	    		"        \"billingNum\": \"200\"," + 
	    		"        \"status\": \"A\"" + 
	    		"      }" + 
	    		"    ]" + 
	    		"  }," + 
	    		"  \"_links\": {" + 
	    		"    \"self\": {" + 
	    		"      \"href\": \"/employee/100/employees\"" + 
	    		"    }" + 
	    		"  }," + 
	    		"  \"page\": {" + 
	    		"    \"size\": 25," + 
	    		"    \"totalElements\": 11," + 
	    		"    \"totalPages\": 1," + 
	    		"    \"number\": 0" + 
	    		"  }" + 
	    		"}";
	    Map<String, Object> map2 = (Map<String, Object>) U.fromJson(json);
	    U.set(map, "soapenv:Envelope.soapenv:Body.getMyData.Visit.item", map2);
	    System.out.println(U.toXml(map));
	}
}

@javaHelper
Copy link
Author

Great, Many thanks for quick help, but I am not clear what did you change ?

@javadev
Copy link
Owner

javadev commented Dec 27, 2019

I fixed JSON and changed type for the U.fromJson(json);

@javaHelper
Copy link
Author

javaHelper commented Dec 27, 2019

In my case, I converted complex POJO to Map using
Map<String, Object> objectMap = mapper.convertValue(response, Map.class);

Look like below code is unable to set it up.
U.set(map, "soapenv:Envelope.soapenv:Body", objectMap);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants