[英]How do I create a password that must contain one of these symbols $, #, @, ! and the username must be only characters and numbers in php?
[英]How do I return JSON with strings that contain only numbers
我有一個 .NET 應用程序,它調用 API 並將響應內容反序列化為 MyClass 具有的列表
class MyClass
{
public int id {get; set; }
public string name {get; set; }
public float score {get; set; }
}
使用
return await response.Content.ReadFromJsonAsync<List<MyClass>>();
我有一個用 PHP 編寫的 API,它從 MySQL 數據庫中讀取數據並返回它們,如下所示:
$response = new Response(json_encode($resultArray, JSON_NUMERIC_CHECK));
現在,如果我不使用 JSON_NUMERIC_CHECK,JSON 中的所有值都會作為字符串返回,例如:
[
{"id":"1","name":"test","score":"3.4"},
{"id":"2","name":"1999","score":"4.8"}
]
因此反序列化失敗,因為它無法將字符串轉換為 int 或 float。
但是,如果我確實使用 JSON_NUMERIC_CHECK,上面的示例如下所示:
[
{"id":1,"name":"test","score":3.4},
{"id":2,"name":1999,"score":4.8}
]
該名稱僅包含數字,因此數字檢查已將其轉換為 int,因此反序列化失敗,因為它無法將 int 轉換為字符串。
有沒有我錯過的正確方法? 我想避免任何黑客攻擊,比如在名稱中返回額外的文本,以強制它成為一個字符串。
我正在使用 PHP 7 和 .NET 6
非常感謝
您將必須知道哪些項目不是字符串,並決定您想要它們的類型。 在這個例子中id
將是一個int
並且score
將是一個float
:
array_walk($resultArray, function(&$v) {
$v['id'] = (int)$v['id'];
$v['score'] = (float)$v['score'];
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.