2013-11-04 52 views
0

我有一個網站,它使用Jersey從我的Java REST服務器發送和接收JSON格式的字符串。一切工作正常,直到我試圖接收一個帶有html標籤的json對象。在html中收到帶有html標籤的json失敗PHP

我的Java服務器上的一個println告訴我,這個數據已經奔發:

data sent: {"text": "Wij zijn Pixel Apps, ook wel bekend als Groep 6.<br /> 
Samen met onze 6 groepsleden verzorgen wij het reilen en zijlen op Ford Lommel Proving Grounds.<br /> 
<br /> 
<b>Korte inleiding</b><br /> 
<p>Onze taak bestaat er uit een functionele applicatie te maken binnen Windows 8. De app bestaat er uit de chauffeurs te begeleiden op hun testritten.<br />De chauffeurs worden onder andere geholpen bij het bekijken van hun routineplan, het bijhouden van notities en het overzetten van de resultaten naar het hoofdgebouw.</p> 
<b>Bijkomende hoort natuurlijk het onderhouden van deze website.</b> 
<p>Zoals u kan zien vind u hierboven het navigatiemenu.<br /> 
Voor meer informatie over ons project kan u terecht bij <i>Over ons</i><br /> 
Wenst u contact op te nemen? U kan zich wenden naar het tabblad <i>Contact</i><br /> 
Indien u meer over de individuele groepsleden wil weten kan u terecht bij <i>Leden</i><br /> 
Als u meer informatie wenst over ons project, gelieve contact op te nemen met ons en wij verzorgen uw verzoek.</p> 
<b>Happy browsing!</b>"} 

它基本上是一個簡單的JSON用一個變量「文本」,並作爲內容的一些HTML格式的內容。我GOOGLE了我的問題,似乎這應該工作正常。

下面是無法發送HTML標記的JSON在它的內容我的Java GET方法:

@GET 
@Path("gettext") 
@Produces("application/json") 
public String getJson(@QueryParam("id") String id, @QueryParam("taalcode") String taalcode) { 
    Connectie c = new Connectie(); 
    try 
    { 
     c.openConnectie(); 
     String content = c.getCms(id, taalcode); 
     if (content == null || content.equals("")) { 
      content = "{ \"text\" : \"Geen tekst gevonden.\" }"; 
     } 
     System.out.println("data send: "+content); 
     return content; 
    } 
    catch(Exception e) 
    { 
     System.out.println("data send: { \"text\" : \"Server error, sorry.\" }"); 
     return "{ \"text\" : \"Server error, sorry.\" }"; 
    } 
} 

我put方法成功地接收到一個JSON HTML標記,在它的內容。 以下是我收到的PHP我的JSON對象(如果沒有HTML標記的存在再次作品):

public function getCMS($id) { 
    $taalcode = ''; 
    if($this->session->userdata('language') == 'nederlands') { 
     $taalcode = 'NL'; 
    } else { 
     $taalcode = 'EN'; 
    } 
    $curl_instance = curl_init(); 
    curl_setopt($curl_instance, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($curl_instance, CURLOPT_URL, 'http://192.168.0.251:8084/Groep1/webresources/cmspost/gettext?id='.$id.'&taalcode='.$taalcode); 

    try { 
     $data = json_decode(curl_exec($curl_instance), true); 
     if ($data == null) { 
      $data['text'] = "Altough I set a string in my java get method if it's null, this message is always printed"; 
     } 
     return $data; 
    } catch (HttpException $ex) { 
     $data['text'] = $ex; 
     return $data; 
    } 
} 

在PHP我測試if ($data == null)這始終是真實的,即使我在GET方法手工設置字符串如果在發送字符串之前顯示爲空。

我在做什麼錯?

回答

3

問題不在於HTML。問題是JSON不允許多行字符串。如果你刪除換行符,你的JSON工作正常。

注意,您確實應該使用JSON庫來構建JSON,而不是自己動手,因爲它會處理這類問題。

+0

我會盡力而爲,謝謝 – DerpyNerd

+0

就是這樣!好奇,我沒有找到任何信息:/ – DerpyNerd