Parse JSON string
Hi,
I'm parsing this JSON string with the libs in org.json and I can't understand why I get the output below into the log.
ArrayList<String> al = new ArrayList<String>();
JSONObject demo = new JSONObject("{\"00408C88A2E6\":{\"id\":\"00408C88A2E6\",\"name\":\"Lab\"},\"00408C91188B\":{\"id\":\"00408C91188B\",\"name\":\"Lab1\"},\"00408C944B99\":{\"id\":\"00408C944B99\",\"name\":\"Lato1\"},\"00408C944BA0\":{\"id\":\"00408C944BA0\",\"name\":\"Lato\"}}");
Iterator<String> iterator = demo.keys();
while (iterator.hasNext() ){
al.add((String)iterator.next());
Log.i(LOG_TAG, "size al into while " + al.size());
Log.i(LOG_TAG, "MAC " + iterator.next() + " for the user " + userId);
}Log output
07-12 08:55:34.056: INFO/parse(285): size al into while 1
07-12 08:55:34.056: INFO/parse(285): MAC 00408C91188B for the user nweb
07-12 08:55:34.066: INFO/parse(285): size al into while 2
07-12 08:55:34.066: INFO/parse(285): MAC 00408C944B99 for the user nweb
07-12 08:55:34.066: INFO/parse(285): size al 2Should not have 4 elements in my ArrayList?
Thank you
mlipreri wrote:
Thank you, I'm really new on this and it's a newbie error, I wasted 2 days for it :)In those two days, did you ever take the time to read the javadocs of the classes you are using?
If not, then that would be a big improvement right there that will seriously shorten the times you have to struggle, plus give you more possibility to resolve issues yourself.
[http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/api/|http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/api/]
Similar Messages
-
Need Help Parsing JSON String using PLJSON
Hello,
I have JSON stored in a database field:
--Query
select data1 from table1 where id= 339207152427;
--Results:
[{"name":"Home"},{"code":"JPNWC74ZKW9"},{"start date":"01\/02\/2014"},{"person name":"hhh, RamS"}]
I need to parse the above results into 3 fields in a separate table. For now, i'm just trying to parse the results using PLJSON, but am getting the ORA-20101: JSON Parser exception - no { start found error when running the following pl/sql block:
declare
VIN_JSON varchar2(4000);
jsonObj json;
listOfValues json_list;
listElement json_value;
begin
select data1 into VIN_JSON from table1 where id= 339207152427;
jsonObj := new json(VIN_JSON);
listOfValues := jsonObj.get_values();
for i in 1..listOfValues.count loop
listElement := listOfValues.get(i);
end loop;
end;
I believe my syntax is close, but was hoping for some further instruction.
Thanks in advance!
JohnI have no idea what you are trying to do or in what version so help, at this point, is not possible.
Let's start with this:
I need to parse the above results into 3 fields in a separate tableAnd the parsing rules?
And what the result should be?
You apparently want us to guess. Which is something most of us do not like to do. (and don't forget your full version number if you want help).
PS: This forum has a FAQ: I recommend you read it as you didn't even put your listing into tags. -
i have json string which i want to parse in string and add in Array,
also i want to access this value as per field name to display in TextBox.
i have parse the json data in string format but i want to add it in array as per their field name,so that i can access it in textfields.
[{"userid":1,"uname":"andruw","address":"west","city":"london","email":"[email protected]"},
{"userid":2,"uname":"pamela","address":"east","city":"london","email":"[email protected]"},
{"userid":3,"uname":"penny","address":"south","city":"paris","email":"[email protected]"},
{"userid":4,"uname":"jhon","address":"north","city":"zurich","email":"[email protected]"}]Why do you wnat it string in hte first place, now you need to split it to get the info. The honest thing to do is to create a custom class to hold this info and populate the array with objects created from JSON. That way you can easily map data to UI controls.
class Person
userId:int;
uname:String;
address:String;
city:String;
email:String;
My 2 cents,
C -
Storing JSON string into Oracle table
Hi,
What is appropriate way to store JSON string into Oracle table?
Regards
PeterIf JSON becomes more popular, ORACLE might write data cartridge extension for JSONDB (in the same way as XMLDB).
Till then CLOB and NCLOB is your best choice, and leave the parsing in your application layer. -
Parsing a string using StringTokenizer
Hi,
I want to parse a string such as
String input = ab{cd}:"abc""de"{
and the extracted tokens should be as follows
ab
cd
"abc""de"
As a result, I used the StringTokenizer class with deilmeter {,},:
StringTokenizer tokenizer = new StringTokenizer(input,"{}:", true);
In this was, I can separate the tokens and also can get the delimeters. The problem is I don't know how to parse the string that has double quote on it. If a single quote " is taken as a delimeter then
", abc, ",", de," all of them will be taken as a separate token. My intention is to get the whole string inside the double quote as a token including the quotes on it. Moreover, if there is any escape character "", it should be also included in the token. Help please.
ThanksA bit of a "sticky tape"-solution...
import java.util.StringTokenizer;
public class Test {
public static void main(String[] args) {
String input = "ab{cd}:\"abc\"\"de\"";
StringTokenizer st = new StringTokenizer(input, "{}:", true);
while(st.hasMoreTokens()) {
String token = st.nextToken();
if(token.startsWith("\"") && token.endsWith("\"")) {
token = token.substring(1,token.length()-1);
System.out.println(token);
} -
How to Parse a string into an XML DOM ?
Hi,
I want to parse a String into an XML DOM. Not able to locate any parser which supports that. Any pointers to this?Download Xerces from xml.apache.org. Place the relevant JAR's on your classpath. Here is sample code to get a DOM document reference.
- Saish
public final class DomParser extends Object {
// Class Variables //
private static final DocumentBuilder builder;
private static final String JAXP_SCHEMA_LANGUAGE =
"http://java.sun.com/xml/jaxp/properties/schemaLanguage";
/** W3C schema definitions */
private static final String W3C_XML_SCHEMA =
"http://www.w3.org/2001/XMLSchema";
// Constructors //
static {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
factory.setValidating(true);
factory.setAttribute(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
builder = factory.newDocumentBuilder();
builder.setErrorHandler(new ErrorHandler() {
public void warning(SAXParseException e) throws SAXException {
System.err.println("[warning] "+e.getMessage());
public void error(SAXParseException e) throws SAXException {
System.err.println("[error] "+e.getMessage());
public void fatalError(SAXParseException e) throws SAXException {
System.err.println("[fatal error] "+e.getMessage());
throw new XmlParsingError("Fatal validation error", e);
catch (ParserConfigurationException fatal) {
throw new ConfigurationError("Unable to create XML DOM document parser", fatal);
catch (FactoryConfigurationError fatal) {
throw new ConfigurationError("Unable to create XML DOM document factory", fatal);
private DomParser() {
super();
// Public Methods //
public static final Document newDocument() {
return builder.newDocument();
public static final Document parseDocument(final InputStream in) {
try {
return builder.parse(in);
catch (SAXException e) {
throw new XmlParsingError("SAX exception during parsing. Document is not well-formed or contains " +
"illegal characters", e);
catch (IOException e) {
throw new XmlParsingError("Encountered I/O exception during parsing", e);
}- Saish -
Parsing formatted String to Int
How can I parse formatted string to Integer ?
I have a formated string like this $900,000 and I need to convert it to 900000 so I could do calculations with it.
I tried something like this
NumberFormat nf = NumberFormat.getIntegerInstance(request.getLocale());
ttlMargin=nf.parse(screenVal);I got this exception
"java.lang.NumberFormatException: For input string: "$1,050,000""I am working on the JSP file that provides
margins,sales etc. I am reading this data off the
screen where it is beeing displayed according to the
accounting practices.
That's why I get it as a formatted string and why I
am trying covert that string to the numberScreen-scraping is a problematic, bad design. It sounds like what you really want is to call a web service which returns its results as data that a program can understand (XML, for example), not HTML (which is meant more for humans to read). I know, you probably can't change the design at this point... just food for thought. In the meantime, you'll probably have to manually parse those strings yourself by stripping out the '$' and ',' characters and then use parseInt on the result. -
How to parse a string containing xml data
Hi,
Is it possible to parse a string containing xml data into a array list?
my string contains xml data as <blood_group>
<choice id ='1' value='A +ve'/>
<choice id ='2' value='B +ve'/>
<choice id ='3' value='O +ve'/>
</blood_group>how can i get "value" into array list?There are lot of Java XML parsing API's available, e.g. JAXP, DOM4J, JXPath, etc.
Of course you can also write it yourself. Look which methods the String API offers you, e.g. substring and *indexOf. -
Send a json string to an HTTP in labview
Hi,
I need to assing values to an HTTP site by sending a json string, I have been trying using the HTTP client PUT vi with no success, does anyone have an easy way of sending a json string to an HTTP site in labview thru the PUT method???
Thank youWhat have you tried?
This should work as a basic example:
If you have LabVIEW 2013 or newer, there are built-in VIs for encoding/decoding JSON strings to/from LabVIEW clusters.
Certified LabVIEW Architect, Certified TestStand Developer
NI Days (and A&DF): 2010, 2011, 2013, 2014
NI Week: 2012, 2014
Knowledgeable in all things Giant Tetris and WebSockets -
Adding a JSON string to an outbound RESTful call in OSB 11.1.1.6
Inside my Proxy Service Message Flow (OSB 11.1.1.6) I have generated a JSON string and stored it in a variable named $jsonReq.
In my Routing action, I point to a Business Service whose Service Type is "Messaging Service" with both Request/Response Message Types as "Text".
What is the proper way to assign the $jsonReq variable's contents to the outbound request body (I am doing a POST)?
I have tried a number of configurations, but to no avail (though I see the JSON contents when I dump it out in a Log action), such as:
Insert
Expression: $jsonReq
Location: as first child of
XPath: .
In Variable: outbound
Please advise.
Thank you,
MichaelHello Prabu,
Thank you for the suggestion. Assigning it to the body didn't work. I changed my configuration to this:
Insert
Expression: $jsonReq
Location: as first child of
XPath: .
In Variable: outbound
The net effect that I can see via the Test Console invocation tracing is that the change from:
RouteToMyBusinessService -> Message Context Changes -> changed $body
<soap:Body xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<!-- our original body from the proxy service inbound SOAP message -->
</soap:Body>
to
RouteToMyBusinessService -> Message Context Changes -> changed $body
<soap:Body xmlns:soap="http://www.w3.org/2003/05/soap-envelope"/>
I know that the $jsonReq has data in it (per a log statement I made: <Jun 6, 2013 7:55:40 AM CDT> <Debug> <ALSB Logging> <BEA-000000> < [RouteToSCCreateBAMLabsProfileBusSvc, null, null, REQUEST] Inserted {"firstName":"string","lastName":"s","email":"stringstring","Login":"string","timeZone":"America/Montevideo","address":{"streetOne":"string","streetTwo":"string","city":"string","state":"st","zipCode":"string","country":"string"},"equipment":{"e":{"type":"Bed","code":"string","serial":"string","sku":"string","version":"string","dateOfPurchase":"2013-11-23T08:44:07"}}} into body> ).
So why would the body be empty when I use the Insert action listed above?
On a side note, is there only one 'body' variable in a proxy message flow? How do I distinguish between the body of the incoming request, the body of the [transformed] outgoing business service request, the body of the business service response and the body of the [transformed] proxy service response?
Thanks again,
Michael -
Passing / parsing XML String IN / OUT from PL / SQL package
Hello, People !
I am wondering where can I find exact info (with code sample) about following :
We use Oracle 8.1.6 and 8.1.7. I need to pass an XML String (could be from VARCHAR2 to CLOB) from VB 6.0 to PL/SQL package. Then I need to use built in PL/SQL XML parser to parse given string (could be large hierarchy of nodes)
and the return some kind of cursor thru I can loop and insert data into
different db Tables. (The return value may have complex parent/child data relationship - so I am not sure If this should be a cursor)
I looked online many site for related info - can't find what I am looking
for - seems like should be a common question.
Thanx a lot !Hello, People !
I am wondering where can I find exact info (with code sample) about following :
We use Oracle 8.1.6 and 8.1.7. I need to pass an XML String (could be from VARCHAR2 to CLOB) from VB 6.0 to PL/SQL package. Then I need to use built in PL/SQL XML parser to parse given string (could be large hierarchy of nodes)
and the return some kind of cursor thru I can loop and insert data into
different db Tables. (The return value may have complex parent/child data relationship - so I am not sure If this should be a cursor)
I looked online many site for related info - can't find what I am looking
for - seems like should be a common question.
Thanx a lot ! -
Hi,
I need to parse,in CVP 7.0(1), the BAAccountNumber variable passed by the ICM dialer. Is there a built-in java class or other function that would help me do this?
Our BAAccountNumber variable looks something like this: 321|XXX12345678|1901|M. In IP IVR I use the "Get ICM Data" object to read the BAAccountNumber variable from ICM and then I use the "token index" feature to parse the variable (picture below).
Alternately, IP IVR also has a Java class that allows me to do this; the class is "java.lang.String" and the method is "public int indexOf(String,int)"
Is there something equivalent in CVP 7.0(1)?
thanksThanks again for your help. This is what I ended up doing:
This configurable action element takes a string seperated by two "|" (123|123456789|12)
and returns 3 string variables.
you can add more output variables by adding to the Setting array below.
// These classes are used by custom configurable elements.
import com.audium.server.session.ActionElementData;
import com.audium.server.voiceElement.ActionElementBase;
import com.audium.server.voiceElement.ElementData;
import com.audium.server.voiceElement.ElementException;
import com.audium.server.voiceElement.ElementInterface;
import com.audium.server.voiceElement.Setting;
import com.audium.server.xml.ActionElementConfig;
public class SOMENAMEHERE extends ActionElementBase implements ElementInterface
* This method is run when the action is visited. From the ActionElementData
* object, the configuration can be obtained.
public void doAction(String name, ActionElementData actionData) throws ElementException
try {
// Get the configuration
ActionElementConfig config = actionData.getActionElementConfig();
//now retrieve each setting value using its 'real' name as defined in the getSettings method above
//each setting is returned as a String type, but can be converted.
String input = config.getSettingValue("input",actionData);
String resultType = config.getSettingValue("resultType",actionData);
String resultEntityID = config.getSettingValue("resultEntityID",actionData);
String resultMemberID = config.getSettingValue("resultMemberID",actionData);
String resultTFNType = config.getSettingValue("resultTFNType",actionData);
//get the substring
//String sub = input.substring(startPos,startPos+numChars);
String[] BAAcctresults = input.split("\\|");
//Now store the substring into either Element or Session data as requested
//and store it into the variable name requested by the Studio developer
if(resultType.equals("Element")){
actionData.setElementData(resultEntityID,BAAcctresults[0]);
actionData.setElementData(resultMemberID,BAAcctresults[1]);
actionData.setElementData(resultTFNType,BAAcctresults[2]);
} else {
actionData.setSessionData(resultEntityID,BAAcctresults[0]);
actionData.setSessionData(resultMemberID,BAAcctresults[1]);
actionData.setSessionData(resultTFNType,BAAcctresults[2]);
actionData.setElementData("status","success");
} catch (Exception e) {
//If anything goes wrong, create Element data 'status' with the value 'failure'
//and return an empty string into the variable requested by the caller
e.printStackTrace();
actionData.setElementData("status","failure");
public String getElementName()
return "MEDDOC PARSER";
public String getDisplayFolderName()
return "SSC Custom";
public String getDescription()
return "This class breaks down the BAAccountNumber";
public Setting[] getSettings() throws ElementException
//You must define the number of settings here
Setting[] settingArray = new Setting[5];
//each setting must specify: real name, display name, description,
//is it required?, can it only appear once?, does it allow substitution?,
//and the type of entry allowed
settingArray[0] = new Setting("input", "Original String",
"This is the string from which to grab a substring.",
true, // It is required
true, // It appears only once
true, // It allows substitution
Setting.STRING);
settingArray[1] = new Setting("resultType", "Result Type",
"Choose where to store result \n" +
"into Element or Session data",
true, // It is required
true, // It appears only once
false, // It does NOT allow substitution
new String[]{"Element","Session"});//pull-down menu
settingArray[1].setDefaultValue("Session");
settingArray[2] = new Setting("resultEntityID", "EntityID",
"Name of variable to hold the result.",
true, // It is required
true, // It appears only once
true, // It allows substitution
Setting.STRING);
settingArray[2].setDefaultValue("EntityID");
settingArray[3] = new Setting("resultMemberID", "MemberID",
"Name of variable to hold the result.",
true, // It is required
true, // It appears only once
true, // It allows substitution
Setting.STRING);
settingArray[3].setDefaultValue("MemberID");
settingArray[4] = new Setting("resultTFNType", "TFNType",
"Name of variable to hold the result.",
true, // It is required
true, // It appears only once
true, // It allows substitution
Setting.STRING);
settingArray[4].setDefaultValue("TFNType");
return settingArray;
public ElementData[] getElementData() throws ElementException
return null; -
Date contructor deprecation : Parsing a String to Date
Hi All,
In Java 1.5 the Date() constructor Date(String s) is deprecated. As per the API Documentation DateFormat.Parse() method is used.
The following code from Java 1.4 version has to be upgraded to Java 1.5.
Existing Code:
Date dDate = new Date(sDate);
Modified Code:
DateFormat df = DateFormat.getDateInstance();
Date dDate = df.parse(sDate);
Here the DateFormat accepts a default formatting style as "Feb 01, 2007" and parses the String.
If the String sDate belongs to any other formatting style such as "01 Feb, 2007" or "01 Feb, 07" the code piece throws unparsable date error.
Please give your thougts on this issue to parse the string of any format..
Thanks,
Rajesh.Hi All,
In Java 1.5 the Date() constructor Date(String s) is
deprecated. As per the API Documentation
DateFormat.Parse() method is used.
The following code from Java 1.4 version has to be
upgraded to Java 1.5.
Existing Code:
Date dDate = new Date(sDate);
Modified Code:
DateFormat df = DateFormat.getDateInstance();
Date dDate = df.parse(sDate);
Here the DateFormat accepts a default formatting
style as "Feb 01, 2007" and parses the String.
If the String sDate belongs to any other formatting
style such as "01 Feb, 2007" or "01 Feb, 07" the code
piece throws unparsable date error.
Please give your thougts on this issue to parse the
string of any format..You can't. What date is this: "08/04/24"? 8 April, 1924? 4 August, 2024?
>
Thanks,
Rajesh. -
I have a Java class that calls a stored proc and passes a stringbuffer object to it. The sproc should parse the string to retrieve the different ids that are concatenated in the stringbuffer and for each id retrieve a row from a table and in the end return a cursor containing the returned rows.Can anyone help me out with the parsing logic for a pipe delimited string.
TathagataThis might help you. If you want to handle the cursor in java, then convert the below into a function which returns the cursor.
SQL> CREATE TABLE EMP(ENAME VARCHAR2(100),ENO NUMBER(5),DEPT NUMBER(5))
2 /
Table created.
SQL> INSERT INTO EMP VALUES('SCOTT',1,2);
1 row created.
SQL> INSERT INTO EMP VALUES('TIGER',2,5);
1 row created.
SQL> INSERT INTO EMP VALUES('THOMAS',3,10);
1 row created.
SQL> INSERT INTO EMP VALUES('PETER',4,10);
1 row created.
SQL> INSERT INTO EMP VALUES('HARRY',7,10);
1 row created.
SQL> CREATE OR REPLACE PROCEDURE PARSE_STRING(STR VARCHAR2)
2 AS
3 TYPE EmpCurTyp IS REF CURSOR;
4 emp_cv EmpCurTyp;
5 STRING VARCHAR2(1000);
6 type emp_t is table of emp%rowtype;
7 emp_tab emp_t;
8 BEGIN
9 STRING := REPLACE(STR,'|',',');
10 OPEN emp_cv FOR 'SELECT ENAME,ENO,DEPT FROM EMP WHERE ENO IN('||string||')';
11 FETCH emp_cv BULK COLLECT INTO EMP_TAB;
12 CLOSE emp_cv;
13 FOR I IN 1..EMP_TAB.LAST
14 LOOP
15 DBMS_OUTPUT.PUT_LINE(EMP_TAB(I).ENAME);
16 END LOOP;
17 EXCEPTION
18 WHEN OTHERS THEN
19 DBMS_OUTPUT.PUT_LINE('ERROR OCCURED ' || SQLCODE ||' ' || SQLERRM);
20 END;
21 /
Procedure created.
SQL> set serveroutput on;
SQL> BEGIN
2 PARSE_STRING('1|2|3|4');
3 END;
4 /
SCOTT
TIGER
THOMAS
PETER
PL/SQL procedure successfully completed.
SQL>Regards,
Mohana -
Parsing a string in a given order
Hi All,
I want to parse a string and rank it in a given order.
Eg : i have a string as 'A | B | C | D'. I would like to parse this string and give a rank in order.
It should appear as below.
Parsed string order
D 1
C 2
B 3
A 4
Any help is greatly appreciated..A database version would help us providing you with a relevant solution.
Starting with 10g, you can do :
SQL> var my_str varchar2(30)
SQL> exec :my_str := 'A|B|C|D'
PL/SQL procedure successfully completed
SQL> select item
2 , row_number() over(order by item desc) as rank
3 from (
4 select regexp_substr(:my_str,'[^|]+',1,level) as item
5 from dual
6 connect by level <= length(regexp_replace(:my_str,'[^|]+')) + 1
7 );
ITEM RANK
D 1
C 2
B 3
A 4
In 11.2 :
SQL> select *
2 from xmltable(
3 'for $i in ora:tokenize($str,"\|") order by $i descending return $i'
4 passing 'A|B|C|D' as "str"
5 columns item varchar2(10) path '.'
6 , rank for ordinality
7 )
8 ;
ITEM RANK
D 1
C 2
B 3
A 4
Edited by: odie_63 on 11 janv. 2012 12:56 - added 11.2
Maybe you are looking for
-
Is Windows 7 64 bit support for Oracle Forms and Reports 6i version
Hi All, Greentings! Its urgent requirement from customer to Install Oracle Forms and Reports 6i Client software in Windows 7 64 bit OS. Can any one please help me to download and Install the same. It would be great if you send me the download link an
-
Activating an iTunes University Site
The activation link to set up my iTunes University account doesn't work any more. Does anyone know who I can contact to resolve this?
-
I am writing a book and need to have the margins alternating left and right pages, so that there is sufficient margin for the binding. I have tried different inside and outside margins, the same inside and outside margins, facing pages, changing the
-
Hi Guys, While writing a report using no. of select statements for all these we have make loops to get the data in the final out put internal table.For this iam writing loops for all the internal tables & finally iam getting nested endloops.In order
-
Problem with 5.1 on x-fi xtream music sound c
I have an 5. x-fi xtream music sound card that i got with it from mesh. The problem is that i get 2 ch fine then anything above that dosent i get the rear speaks with disortion and no center but subwoofer i have csmm-3d on 5. on on creative and windo