// JSON object to hold the information, which is sent to the server
JSONObject jsonObjSend = new JSONObject();
jsonObjSend.put("action", "myAction");
jsonObjSend.put("type", tipo);
Run Code Online (Sandbox Code Playgroud)
现在一切都好,但如果我想添加
jsonObjSend.put("elementi", arrayOfElements);
Run Code Online (Sandbox Code Playgroud)
其中arrayOf Elements必须是字符串数组.我能怎么做?
/ **编辑
我需要什么样的例子
{
"action": "myAction",
"type": "elementi",
"elementi": [
"3287498357",
"23472857"
]
}
Run Code Online (Sandbox Code Playgroud) 玩弄Volley库时,我注意到在进行POST时JsonObjectRequest,如果服务器返回代码304或200且响应中没有数据,则(response.data)Volley将其解释为错误响应,而不是成功.
我设法通过Response<JSONObject> parseNetworkResponse(NetworkResponse response)在类中的方法中添加几行代码来解决它JsonObjectRequest.java.
@Override
protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
try {
if (!response.notModified) {// Added for 304 response
String jsonString = new String(response.data,
HttpHeaderParser.parseCharset(response.headers));
return Response.success(new JSONObject(jsonString),
HttpHeaderParser.parseCacheHeaders(response));
} else // Added for 304 response
return Response.success(new JSONObject(),HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
Log.v("Volley", "UnsupportedEncodingException " + response.statusCode);
if (response.statusCode == 200)// Added for 200 response
return Response.success(new JSONObject(), HttpHeaderParser.parseCacheHeaders(response));
else
return Response.error(new ParseError(e));
} catch (JSONException je) {
Log.v("Volley", "JSONException …Run Code Online (Sandbox Code Playgroud) android request http-status-code-304 android-volley jsonobject
我放心使用 - https://code.google.com/p/rest-assured/wiki/Usage 我的JsonObject看起来像这样
{
"id": "12",
"employeeInfo": null,
"employerInfo": null,
"checkDate": 1395093997218,
"netAmount": {
"amount": 70,
"currency": "USD"
},
"moneyDistributionLineItems": [
{
"mAmount": 100,
"employeeBankAccountId": "BankAccount 1"
}
],
}
Run Code Online (Sandbox Code Playgroud)
如何使用REST保证的POST将其作为参数的一部分发送?我试过了
given().param("key1", "value1").param("key2", "value2").when().post("/somewhere").then().
body(containsString("OK"));
Run Code Online (Sandbox Code Playgroud)
但对于具有嵌套值的HUGE对象,这是不可扩展的.有更好的方法吗?
这是我尝试注册用户时调用的Django Rest Framework代码/视图:
def post(self, request):
serializer = UserSerializer(data=request.DATA)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Run Code Online (Sandbox Code Playgroud)
这是我的AngularJS代码,用于注册用户/调用上面发布的Django视图:
self.add = function() {
$http.post("/CMS/users", self.user) // this URL calls the Django view posted above
.error(function(data, status, headers, config) {
console.log(data);
for (prop in data) {
console.log(data[prop]);
};
})
.then(fetchUsers); // gets a list of existing users
console.log("User clicked submit with ", self.user);
};
Run Code Online (Sandbox Code Playgroud)
当我尝试注册已经存在的用户时,这是记录的内容:
Object {username: Array[1]}
username: Array[1]
0: "This username is already taken. Please, try again"
length: 1 …Run Code Online (Sandbox Code Playgroud) javascript django angularjs django-rest-framework jsonobject
我试图循环删除每个对象中的元素的对象列表.每个对象都是一个新行.我试图保存新文件,而不包含对象中包含的元素.我知道这可能是一项简单的任务,但我似乎无法完成这项工作.如果有人能提供帮助,将不胜感激.谢谢.
{
"business_id": "fNGIbpazjTRdXgwRY_NIXA",
"full_address": "1201 Washington Ave\nCarnegie, PA 15106",
"hours": {
"Monday": {
"close": "23:00",
"open": "11:00"
},
"Tuesday": {
"close": "23:00",
"open": "11:00"
},
"Friday": {
"close": "23:00",
"open": "11:00"
},
"Wednesday": {
"close": "23:00",
"open": "11:00"
},
"Thursday": {
"close": "23:00",
"open": "11:00"
},
"Saturday": {
"close": "23:00",
"open": "11:00"
}
},
"open": true,
"categories": ["Bars", "American (Traditional)", "Nightlife", "Lounges", "Restaurants"],
"city": "Carnegie",
"review_count": 7,
"name": "Rocky's Lounge",
"neighborhoods": [],
"longitude": -80.0849416,
"state": "PA",
"stars": 4.0,
"latitude": …Run Code Online (Sandbox Code Playgroud) 请检查此代码示例.
HttpEntity getResponseEntity = getResponse.getEntity();
String message = EntityUtils.toString(getResponseEntity,"UTF-8");
//message = {"EntryPointJsonResult":"{\"NextTransactionUrl\":null,\"TraceId\":null,\"IsAuthorizationRequired\":false,\"IsError\":false,\"ErrorCode\":null,\"ErrorMessage\":null}"}
JSONObject object = new JSONObject(message);
String objectString = object.getString("EntryPointJsonResult");
//objectString = {\"NextTransactionUrl\":null,\"TraceId\":null,\"IsAuthorizationRequired\":false,\"IsError\":false,\"ErrorCode\":null,\"ErrorMessage\":null}
Run Code Online (Sandbox Code Playgroud)
这就是问题:我希望得到没有"EntryPointJsonResult"的"objectString".导致此信息在另一个响应中有所不同.
那么如何在没有像"EntryPointJsonResult"这样的特定键的情况下获取"objectString"呢?
我想知道是否有办法在不知道其名称的情况下获取JSONObject的第一个子节点的值:
我有一些JSON进来了一个名为的节点, this_guy
{"this_guy": {"some_name_i_wont_know":"the value i care about"}}
Run Code Online (Sandbox Code Playgroud)
使用JSONObject,如果我不知道孩子的名字,怎么能干净利落地得到"我关心的价值".我所知道的只是"this_guy",有人吗?
这是我的字符串
String currentTokenNo = "/SUeSjUf0A0aLFr+wVIZbw==\nLmmWtgHZ90yH0NBoATYB/A"
Run Code Online (Sandbox Code Playgroud)
我已将此字符串添加到我JsonObject的com.google.gson.JsonObject 包中
JsonObject jsonToSubmit = new JsonObject();
try {
jsonToSubmit.addProperty("token", currentTokenNo);
} catch (Exception e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
但是当我记录我的String和JsonObject
Log.d("mainactivityjson", "Current Token No : "+currentTokenNo );
Log.d("mainactivityjson", "jsonToSubmit : "+jsonToSubmit);
Run Code Online (Sandbox Code Playgroud)
我找到了结果
D/mainactivityjson: Current Token No : "/SUeSjUf0A0aLFr+wVIZbw==\nLmmWtgHZ90yH0NBoATYB/A"
D/mainactivityjson: jsonToSubmit : {"token":"\"/SUeSjUf0A0aLFr+wVIZbw==\\nLmmWtgHZ90yH0NBoATYB/A\""}
Run Code Online (Sandbox Code Playgroud)
现在,我的问题是:
为什么这些引号和斜杠被添加到值JsonObject?它有什么合适的理由吗?
它确实妨碍了在服务器端检查String值的过程.
我已经完成了一个临时的解决方案,通过从两侧修剪单个角色来完成任务,如下所示
jsonToSubmit.addProperty("token",currentTokenNo.substring(1,currentTokenNo.length()-1));
Run Code Online (Sandbox Code Playgroud)
这完美地运作但我不认为这对未来更好!
附加信息 :
变量currentTokenNo不是如上所示直接声明的,它是从SharedPreferences&检索到的.如果直接声明它,那么一切正常.
String currentTokenNo = preferences.getString(LOGINCRED_TOKEN,"");
Run Code Online (Sandbox Code Playgroud)
如果直接声明相同的变量,一切正常.
任何形式的帮助将不胜感激.
我需要下载JSON,然后将其存储在JSONObject中.
我正在使用org.json.JSONArray.
以下是一个地方的所有代码:
import org.json.JSONException;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class Test
{
public static JSONObject getJSON()
{
try
{
URL uri = new URL("http://events.makeable.dk/api/getEvents");
HttpURLConnection urlConnection = (HttpURLConnection) uri.openConnection();
if (urlConnection.getResponseCode() != HttpURLConnection.HTTP_OK)
{
return null;
}
InputStream inputStream = urlConnection.getInputStream();
if (inputStream != null)
{
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
StringBuffer buffer = new StringBuffer();
try
{
String line;
while ((line = br.readLine()) != null)
{ …Run Code Online (Sandbox Code Playgroud) 我正在尝试通过Parse的REST API在我的Parse.com数据库中使用HttpsUrlConnection创建一个新对象.他们的REST API只接受JSON.我已经完成了所有工作,数据库将接受新的对象条目 - 除了我尝试包含Date字段时.当我传入日期时,服务器完全拒绝该对象.
我在他们的文档中找到了这个描述,用于在使用REST API时如何在对象中添加Date字段:
Parse移动客户端库还支持日期,二进制数据和关系数据.在REST API中,这些值被编码为JSON哈希值,并且__type字段设置为指示其类型,因此如果使用正确的编码,则可以读取或写入这些字段.
Date类型包含一个字段iso,其中包含以ISO 8601格式存储的UTC时间戳,精度为毫秒级:YYYY-MM-DDTHH:MM:SS.MMMZ.
{
"__type": "Date",
"iso": "2011-08-21T18:02:52.249Z"
}
Run Code Online (Sandbox Code Playgroud)
因此,如果我想创建一个新对象并将其传递给数据库,我假设我需要创建另一个JSONObject并将其传递到相应的字段中.然而,当我尝试时,它仍然拒绝它.下面是我尝试将Date对象添加为要传递的参数,存储在自己的JSONObject中.我究竟做错了什么?基于文档在JSON中发送Date对象的正确方法是什么?
//datePicked is a Calendar object
Date sendTime = datePicked.getTime();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
String sendTimeInUTC = formatter.format(sendTime);
//Storing the Date object as a JSONObject, as specified
JSONObject dateAsObj = new JSONObject();
dateAsObj.put("__type", "Date");
dateAsObj.put("iso", sendTimeInUTC);
//jsonParam is the JSONObject that is being sent over to Parse's REST API
jsonParam.put("sendTime", dateAsObj);
Run Code Online (Sandbox Code Playgroud)
这是完整的函数,它产生http请求,用于上下文和引用:
private void runHttpRequest(final String emailAddress, final String password, …Run Code Online (Sandbox Code Playgroud) jsonobject ×10
android ×6
java ×5
json ×2
angularjs ×1
date ×1
django ×1
http-post ×1
javascript ×1
python ×1
request ×1
rest-assured ×1
string ×1