2016-07-29 12 views
0

Ich versuche, eine HTTP-Post-Anforderung zum Verbrauch einer WebAPI neu erstellen. Ich habe es ursprünglich in C# erstellt und es zur Arbeit gebracht. Aber das Java-Analog scheint mir ein bisschen zu geben ...Java-Zeichenfolge in JSON-Objekt für HTTP-POST konvertieren

mein Eingabe-String besteht aus Parametern, die vom Webapi erwartet werden.

 String input = "{" + 
       "\"UserID\":xxx," + 
       "\"UserPsw\":\"yyy," + 
       "\"ApiFunction\":zzz," + 
       "\"DppName\":aaaa," + 
       "\"DppVersion\":Latest, " + 
       "\"ClearData\"ftfdgfdgfdg fdgfdgfd 4354534," + 
       "\"ResultType\":JSON \"}"; 

Jetzt habe ich heruntergeladen JSON-simple JAR-Datei aus: - https://code.google.com/archive/p/json-simple/downloads

und importiert sie in meinen Bibliotheken Ordner für das Java-Projekt.

dann für meine main.java Klasse, importiert ich folgendes: -

import org.json.simple.JSONObject; 

Die Absicht ist, mein 'Eingang' String in ein JSON onbject als solche zu konvertieren: -

JSONObject jsonObject = new JSONObject(input); 

aber ich erhalte einen Fehler, der sagt: -

cannot find symbol 
    symbol: constructor JSONObject(java.lang.String) 
    location: class org.json.simple.JSONObject 

was mache ich falsch?

Der Grund, warum ich es in ein JSON-Objekt konvertieren wollen, ist, weil mein WebAPI ein bestimmtes Format für eine Zeichenfolge erwartet ...

{"UserID":xx,"UserPsw":yyy,"ApiFunction":zzz,"DppName":aaaa,"DppVersion":Latest, "ClearData":ftfdgfdgfdg fdgfdgfd 4354534,"ResultType":JSON "} 

aber mein Java String-Eingang ist so formatiert, wie: -

{"UserID":"xx","UserPsw":"yyy","ApiFunction":"zzz","DppName":"aaaa","DppVersion":"Latest", "ClearData":"ftfdgfdgfdg fdgfdgf 4354534","ResultType":"JSON"} 

Das ist anders als, wie C# sendet es als ein Klassenobjekt mit Anführungszeichen nur um Eigenschaftsnamen und nicht um Werte herum.

+1

'{ "UserID": xx "UserPsw": yyy. ..' ist kein gültiger JSON. –

+0

ist es nicht ... wie ich schon erwähnte ... in C# .. es wird als ein Klassenobjekt gesendet. was es so formatiert. – Philo

Antwort

0

Nach dem docs

http://juliusdavies.ca/json-simple-1.1.1-javadocs/org/json/simple/JSONObject.html

gibt es keinen Konstruktor, der ein String als Parameter akzeptiert. Sie könnten darüber nachdenken, es in eine Map zu konvertieren, die es klarer und weniger fehleranfällig machen würde.

HashMap<String,String> newMap = new HashMap<>(); 
newMap.put("UserID","xxx"); 
//... the rest of your attributes 
JSONObject jsonObject = new JSONObject(newMap); 

Wie 'Mappan' vorgeschlagen Sie die JSONParser als auch nutzen könnten:

try { 
    JSONParser parser = new JSONParser(); 
    JSONObject json = (JSONObject) parser.parse(stringToParse); 
} catch (org.json.simple.parser.ParseException e) { 
    e.printStackTrace(); 
} 

Entnommen: How to convert String to JSONObject in Java

+0

Ich möchte so etwas tun http://stackoverflow.com/questions/5245840/how-to-convert-string-to-jsonobject-in-java – Philo

+0

Ja, Mappan Antwort sollte auch funktionieren. – Matt

+0

erlaubt mir nicht, meine Saite zu formatieren, wie Mappan darauf hinweist. versuchte es .. auch, schau auf charus Antwort – Philo

Verwandte Themen