2016-06-25 1 views
1

Я получаю данные:Как я могу работать с полученными данными из Azure IoT Hub

public void accept(PartitionReceiver receiver) 
{ 
    System.out.println("** Created receiver on partition " + partitionId); 
    try { 
     while (true) { 
      Iterable<EventData> receivedEvents = receiver.receive(10).get(); 
      int batchSize = 0; 
      if (receivedEvents != null) 
      { 
       for(EventData receivedEvent: receivedEvents) 
       {          
        System.out.println(String.format("| Time: %s", receivedEvent.getSystemProperties().getEnqueuedTime())); 
        System.out.println(String.format("| Device ID: %s", receivedEvent.getProperties().get("iothub-connection-device-id"))); 
        System.out.println(String.format("| Message Payload: %s", new String(receivedEvent.getBody(), Charset.defaultCharset()))); 
        batchSize++; 
       } 
      } 
     } 
    } catch (Exception e) 
    { 
     System.out.println("Failed to receive messages: " + e.getMessage()); 
    } 
} 

Здесь я стал названием продукта и цена:

System.out.println(String.format("| Message Payload: %s", new String(receivedEvent.getBody(), Charset.defaultCharset()))); 

Как я могу взять на себя полезную нагрузку, продукт в String-продукт; и цена в двойную цену ;?

+0

Полезная нагрузка будет json-строкой. Таким образом, вы можете десериализовать соответствующий объект и использовать. – Aravind

ответ

0

Peter Pan и Aravind помогли мне решить проблему.

Вот решение проблемы:

public class Product { 
public Product(){ 

} 
    private String product; 
    private Double price; 

public Product(String json){ 
    Gson gson=new Gson(); 
    try{ 
     Product product =gson.fromJson(json, Product.class); 
     if (product!=null){ 
      System.out.println("Name: " +product.getProduct()); 
     } 
    }catch (Exception e){ 
     System.out.println("failed: " +e.getMessage()); 
    } 
} 

    public String getProduct() { 
     return product; 
    } 

    public Double getPrice() { 
     return price; 
    } 
} 

Здесь я прочитал JSON строку в в объект из класса продукта, класс Продукт содержит переменные, продукт унд цена с добытчика. Оно работает!

public Product(String json){ 
    Gson gson=new Gson(); 
    try{ 
     Product product =gson.fromJson(json, Product.class); 
     if (product!=null){ 
      System.out.println("Name: " +product.getProduct()); 
     } 
    }catch (Exception e){ 
     System.out.println("failed: " +e.getMessage()); 
    } 
} 
1

Как сказал @Aravind, вы можете определить класс POJO для упаковки данных в виде свойств объекта, как Payload и сериализациях & десериализации данных в теле события между POJO и строками JSON, используя некоторые JSon библиотеки, такой как jackson, fastjson, или выберите один из http://www.json.org/.

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