2014-02-01 2 views
-1

Я использую mailgun, и webhook отправляет сообщение на мой сервер с данными json в следующем формате. Я не знаком с тем, как разбирать этот тип запроса json, который не использует фигурные скобки. Я не уверен, какой формат вызывается для поиска решения.как разобрать данные json, закодированные квадратными скобками

Мне нужно разобрать строку возврата и быть в состоянии получить доступ к элементам, как JSON [ «Полученное»]

[["Received", "by luna.mailgun.net with SMTP mgrt 8778766572977; Sat, 01 Feb 2014 22:55:12 +0000" 
["X-Envelope-From", "<[email protected]>" 
["Return-Path", "<[email protected]>" 
["Received", "from some data here Sat, 01 Feb 2014 14:55:09 -0800 (PST)" 
["Content-Type", "text/plain; charset=\"us-ascii\"" 
["Mime-Version", "1.0 (Mac OS X Mail 6.6 \\(1510\\))" 
["Subject", "Re: Hello world" 
["From", "AT <[email protected]>" 
["In-Reply-To", "<[email protected]>" 
["Date", "Sat, 1 Feb 2014 16:55:08 -0600" 
["Content-Transfer-Encoding", "7bit" 
["Message-Id", "<[email protected]>" 
["References", "<[email protected]>" 
["To", "[email protected]" 
["X-Mailgun-Incoming", "Yes"]] 
+4

Это не JSON. –

ответ

1

Это не JSON действительно.

Вы можете разобрать его, например. как это.

Если у вас есть этот файл сохранен как UTF-8 убедитесь, что он будет сохранен с
не BOM в противном случае эта программа ниже будет производить дополнительную
первую строку, которая выглядит как пустой, но это не так.

import java.io.BufferedReader; 
import java.io.FileInputStream; 
import java.io.InputStreamReader; 

class Test { 

    public static void main(String[] args) throws Exception{ 
     String fn = "C:\\Various\\input.txt"; 
     BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(fn), "UTF8")); 
     StringBuilder sb = new StringBuilder(); 
     String str = null; 
     while ((str = br.readLine())!=null){ 
      sb.append(str); 
     } 
     br.close(); 
     String z = sb.toString(); 
     String[] arr = z.split("\\[+|\\]+|, \""); 
     for (int i=0; i<arr.length; i++){ 
      arr[i] = arr[i].trim(); 
      if (!arr[i].isEmpty()){ 
       if (arr[i].charAt(0) == '"'){ 
        arr[i] = arr[i].substring(1); 
       } 
       if (arr[i].charAt(arr[i].length() - 1) == '"'){ 
        arr[i] = arr[i].substring(0, arr[i].length() - 1); 
       } 
       System.out.println(arr[i]); 
      } 
     } 
    } 

} 
Смежные вопросы