2016-04-10 3 views
0

Maven ProjectでJerseyサーバーを構築していて、C#プログラムからリクエストを送信しようとしたときを除き、すべて正常に動作しています。 JSONが表示されます:私は、空のJava配列で終わるサーバーにコードを送信するとJSON配列がジャージーにマップされない

[{"Weight":0.0,"RFIDCode":0},{"Weight":55.5,"RFIDCode":1}] 

私のC#コードは

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using Newtonsoft.Json; 
using System.IO; 
using RestSharp; 

namespace POSTJSONList 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      List<ExampleMen> people = new List<ExampleMen>(); 
      JsonSerializer ser = new JsonSerializer(); 
      for (int i = 0; i < 5; i++) 
      { 
       ExampleMen person1 = new ExampleMen(i, i * 55.5); 
       people.Add(person1); 
      } 
      string json = JsonConvert.SerializeObject(people); 
      Console.WriteLine(json); 
      Console.ReadLine(); 
      var client = new RestClient("http://localhost:9998"); 
      var request = new RestRequest("/trash", Method.POST); 
      request.AddJsonBody(json); 
      client.ExecuteAsync(request, response => { 
       Console.WriteLine(response.Content); 
      }); 
      Console.ReadLine(); 
     } 
    } 
} 

私のJavaコードを下回っているが

を下回っています210
@POST 
    @Produces("application/json") 
    @Consumes(MediaType.APPLICATION_JSON) 
    //@Param recycleList a list of all of the data that we have collected 
    public String createtrash_records(trashpickup_type trashList[]){ 
     System.out.println("Im Here Guys!!!!"); 
     // TODO update this to take the information we pass through to it and create individual objects based on it. 
     // TODO modify to return success code 
     billing billSystem = billing.getInstance(); 
     systemTotalsTrash sysTotalsTrashSystem = systemTotalsTrash.getInstance(); 
     int i = 1; 
     for(trashpickup_type alpha : trashList) 
     { 
      System.out.println(alpha.getRFIDCode() + alpha.getWeight()); 
      i++; 
      /*try { 
       billSystem.updateBillingRecord(rec.getUserName(), 0, rec.getWeight()); 
       sysTotalsTrashSystem.updateSystemTotals(rec.getWeight()); 
       getDao().createIfNotExists(rec); 

      } catch (SQLException e) { 
       e.printStackTrace(); 
      } 
      */ 
     } 
     return "It worked"; 
    } 

モデルコード(JSONがマップされているもの)は、任意の提案が理解される。ここで

package com.gallup.gethip.model; 

import java.util.Date; 

import javax.xml.bind.annotation.XmlRootElement; 

import com.j256.ormlite.field.DatabaseField; 
import com.j256.ormlite.table.DatabaseTable; 

@XmlRootElement 
@DatabaseTable(tableName="trash_records") 
public class trashpickup_type { 
    @DatabaseField(columnName = "RFIDCode") 
    private int RFIDCode; 
    @DatabaseField(columnName = "Weight") 
    private double Weight; 
    @DatabaseField(columnName = "PickedUp") 
    private Date PickedUp; 
    public trashpickup_type() 
    { 

    } 
    public void setRFIDCode(int RFIDCode) 
    { 
     this.RFIDCode = RFIDCode; 
    } 
    public void setWeight(double Weight) 
    { 
     this.Weight = Weight; 
    } 
    public void setPickedUP(Date PickedUp) 
    { 
     this.PickedUp = PickedUp; 
    } 

    public double getWeight() 
    { 
     return Weight; 
    } 
    public double getRFIDCode() 
    { 
     return RFIDCode; 
    } 
    public Date getPickedUp() 
    { 
     return PickedUp; 
    } 
} 

あります。私は、必要に応じて、より多くの情報を要求に応じて投稿します。

答えて

1

peopleリストをjsonにシリアル化し、次にrequest.AddJsonBodyを使用してリクエストに追加します。しかしAddJsonBodyは再び引数をjsonにシリアル化します。したがって、サーバー側では、trashList[]に解析できない2つのシリアル化された値になります。したがって、クライアント側のシリアライゼーションコードを削除して、単に書き込みします。

request.AddJsonBody(people); 
関連する問題