我正在使用Asp.Net Web API處理項目。這個API將使用另一個API,讓它稱爲B點。Json.Net中的重複值
來自B點的響應如下,並反序列化到Web API中,因爲我需要更改其中的一些信息,然後在Web API中再次序列化它。
{
"Row": [
{
"key": "MjAxMy0xMQ==",
"Cell": [
{
"column": "Y291bnQ6ZGFlbW9u",
"timestamp": 1385195582067,
"$": "MTE1"
},
{
"column": "Y291bnQ6a2Vybg==",
"timestamp": 1385195582067,
"$": "MQ=="
},
{
"column": "Y291bnQ6dXNlcg==",
"timestamp": 1385195582067,
"$": "MA=="
}
]
}
]
}
這是我的映射。
public class RowEntry
{
[JsonProperty("Row")]
public List<Row> Rows { get; set; }
}
public class Row
{
[JsonProperty("key")]
private string _key;
public string Key
{
get { return Base64Converter.ToUTF8(_key); }
set
{
_key = value;
}
}
[JsonProperty(PropertyName = "Cell")]
public List<Cell> Cells { get; set; }
}
public class Cell
{
[JsonProperty(PropertyName = "column")]
private string _column;
public string Column
{
get
{
return Base64Converter.ToUTF8(_column);
}
set
{
_column = value;
}
}
[JsonProperty(PropertyName = "timestamp")]
public string Timestamp { get; set; }
[JsonProperty(PropertyName = "$")]
private string _value;
public string Value
{
get
{
return Base64Converter.ToUTF8(_value);
}
set
{
_value = value;
}
}
}
在我的控制器我有
// Get JSON from point-B
var response = await _client.GetStringAsync(BuildUri(table, startDate, endDate));
// Parse the result into RowEntry object
var results = JsonConvert.DeserializeObject<RowEntry>(response);
// This should return the RowEntry object as JSON as I'm using Web API here
return results;
這將返回一個新的JSON其中只有要素按我上面的類。但是,它似乎還包含來自B點的第一個請求的JSON。
{
"Row": [
{
"Key": "decoded value here",
"key": "MjAxMy0xMQ==",
"Cell": [
{
"Column": "decoded value here",
"column": "Y291bnQ6ZGFlbW9u",
"timestamp": 1385195582067,
"Value": "decoded value here",
"$": "MTE1"
},
// abbreviated
]
}
]
}
我很困惑怎麼可能是這樣,因爲我是序列化RowEntry
,我怎麼能解決這個問題?
這是因爲在私人領域的'JsonProperty'屬性的發生。你需要將$的名稱切換爲值嗎?如果你確定$,這可以很容易地處理。 – Alden
我不能使用$,因爲當它傳遞給視圖時,它與jQuery $發生衝突。但是你是對的,這是因爲私人領域,我需要添加'JsonIgnore'屬性。謝謝。 –